我需要从模型内部的方法调用控制器内部的动作。这是我在其他语言(使用MVC框架)时做了很多事情,但是,我从来没有在Ruby on Rails中看到过这一点。该操作不会呈现任何内容,它只是更新会话变量。Rails模型调用控制器动作
6
A
回答
5
这通常不是你通常在MVC模式中做的事情。您的模型应该只包含业务逻辑(和数据访问)。你能提供一些关于你想要打电话的信息吗?为什么?通常当你试图做这样的事情时,这是一种不应该出现的东西。
通常这是我看到它的方式:
- 模型 - 这是数据对象 也有商业逻辑
- 控制方法 - 这些都是采取由你的应用程序 的行动,他们控制在 模型,并告诉他们做什么,他们 控制视图来告诉它什么 发出
- 视图 - 这个界面层, 它可以是任何格式(HTML,JS, XML),但它具有非常小的逻辑 它
如果你想打电话给在控制器的东西从一个模型,这可能意味着有太多的模型中的控制逻辑。或者,也许你刚刚得到了一个可以在任何地方使用的方法(这是一个辅助方法,实际上它与模型和控制器无关)。在这种情况下,你应该把它放在你自己的模块中/ lib目录中。
编辑:是的,会话变量应该只能在控制器中触及/更新。也许你的模型中有太多的控制类型逻辑?也许应该重新思考这个逻辑与实际模型有多密切,如果它实际上是控制器行为的一部分。
0
如果你想调用控制器动作(或cahange会话,因为session
被定义为@session
变量,它是私有的)的模型,你应该通过控制器实例作为一个参数去模型的方法,所以如果你需要编辑session
方法可能类似于
def change_session(controller)
@ses = controller.send :session
//some actions
end
在控制器
def something
s = Session.new
s.change_session(self)
...
end
相关问题
- 1. Rails模型和控制器
- 2. Rails从控制台调用控制器动作
- 3. cakephp你如何在模型中调用控制器的动作
- 4. Rails 3使用两种模型和控制器制作窗体
- 5. rails link_to控制器动作
- 6. Rails link_to控制器动作
- 7. Rails多控制器动作
- 8. Rails的控制器动作
- 9. rails:检查从模型中调用哪个控制器方法
- 10. Rails:控制器返回500错误,而不是调用模型
- 11. 如何从控制器中的Rails 3调用模型方法?
- 12. Rails命名空间 - 从第二个控制器调用模型
- 13. Rails - 在控制器中调用模型方法
- 14. 调用模型方法在控制器
- 15. Rails:update_attribute调用多个控制器/模型?
- 16. Ruby控制器调用模型
- 17. Codeigniter控制器模型调用失败
- 18. jquery调用rails控制器
- 19. Rails:使用控制器作为模型名称
- 20. Rails控制器无法识别模型
- 21. Rails模型/控制器结构
- 22. Ruby On Rails模型/控制器问题
- 23. Rails一个模型 - 许多控制器
- 24. rails rspec模型和控制器测试
- 25. Rails控制器如何访问模型?
- 26. 从模型或控制器断言Rails?
- 27. Ruby on Rails模型/控制器访问
- 28. 使用link_to调用控制器动作
- 29. 使用jQuery调用控制器动作
- 30. Rails的控制器动作被调用两次
的问题是,我有一个验证的插件,我需要在用户通过插件里面一个记得我的功能登录(调用一个方法,BYP评估所有的登录控制器操作 - 如果不是这种情况,我显然会在这里更改会话数据)。在控制器中调用方法的需求与分析跟踪相关,而不是用户看到的任何内容。 – scott 2010-08-19 14:38:25