我在Rails上有一个动作,但我希望继续从另一个动作中进行处理.我的代码看起来像这样:
send(new_action) #call the new_action method action_name = new_action #change the controller.action_name render :action => new_action #inform the view that we're in new_action
这工作,但action_name - 虽然它从ActionController实例中更改 - 在从视图中检索时被重置
controller.action_name
有没有办法设置它并让它坚持下去?
编辑:我找到了另一个不涉及这个问题的解决方案,就在这里.谢谢!
你做错了!
在ActionPack内部的这种摆弄几乎可以保证迟早会让你感到悲痛.不能保证那些内部版本不会在版本之间发生根本变化,很难维护(对于你自己和他人),因为你完全忘记它正在做什么以及为什么这样做,而且真正有可能引入微妙的错误.
相反,采用两个操作共同的代码并将其放入一个通用方法,如控制器中的私有方法,模型中的更多逻辑,或者,如果需要,在控制器的继承链中更高的公共函数.