如何在另一个控制器中调用操作并获取该操作的控制器代码?

时间:2012-01-08 09:12:53

标签: ruby-on-rails model-view-controller renderaction

  

可能重复:
  Rails: call another contoller action from a controller

您好我是rails的新手,在我的主页视图中我想调用其他控制器中的操作。 我正在使用渲染'the / relevant / url'。

这是调用视图但没有达到正确的控制器操作代码,因此 没有设置视图所期望的视图模型。

我来自asp.net mvc world,在这里我们可以使用render动作,这将触及控制器代码。

这可以在铁轨上完成吗?

如果你不能,asp.net做mvc模式是错误的吗?

非常感谢

更新

我的目的是从主页的视图调用另一个控制器动作来获取与主控制器细节无关的辅助数据,例如。当天的报价或当天特价。

3 个答案:

答案 0 :(得分:2)

这被认为是不好的做法。在控制器中构建视图时,很大一部分数据将是有状态的。可以使用render和模板覆盖来破解疯狂的解决方案,但基本上,你永远不应该这样做。

相反,使用redirect_to other_controller_action_url(默认情况下将发送HTTP 302 FOUND),甚至更好,找出代码重复的位置并将其分解为帮助者或演示者。

编辑:如果你试图在这样的侧边栏中填充东西,你不应该使用整个rails堆栈来呈现你的响应的这么一小部分。相反,您最好使用帮助程序生成特定数据,并使用partial来渲染侧边栏。

答案 1 :(得分:1)

您必须使用redirect_to,从一个控制器操作传递到另一个控制器操作。

答案 2 :(得分:1)

“这是调用视图但没有按下正确的控制器动作代码,因此没有设置视图所期望的视图模型。”

非常混乱。

我只想阅读一两本书,比如使用Rails的Agile Web Development和O'Reilly Ruby书。

从浏览器页面开始,即查看。因此,用户单击链接,它会调用控制器操作,执行某些操作。它可以通过Controller.action调用其他控制器操作来执行操作。它显示的html将来自初始控制器渲染语句,除非它重定向到另一个执行渲染的控制器。

当你来自asp,php等轨道意味着重新布线你的理解,它通常需要一段时间。我来自冷聚变,不得不通过这个过程。