我有一个名为“show”的控制器的视图.在这个视图中,我想渲染另一个控制器视图的内容 – 显然,该视图上的表单的逻辑与它所属的控制器进行通信.我该如何做?我相当新的轨道,我对框架还没有100%的信心.
你几乎可以把它们视为“小部件”.我知道您可以通过使用以下方式从同一控制器呈现动作:
render :action => "show_home_page",:layout=> false
但是我需要它从另一个控制器渲染动作(视图).
即.
I have a view,which is
rendered onto a layout. That view,
belongs to controller A.
I need to render the “index” and “new”
views from controller B inside the original view (above)
.
解决方法
你的问题中的术语有点困惑.如果在控制器中,并且要在另一个控制器中执行另一个操作方法中的代码并呈现其模板,则应该重定向到该操作.让我们说另一个控制器叫做ContractsController
redirect_to :controller => "contracts",:action => "show_home_page"
如果您只想使用其他方法的视图模板作为操作的响应,则只需在render参数中指定控制器的名称.这不会调用action,它只会使用它的模板.
例如,如果模板位于合约控制器的文件夹中.
render :action => "/contracts/show_home_page",:layout=> false
我认为在这种情况下,你实际上是在谈论一个部分,这将是一样的
render :partial => "/contracts/show_home_page"
但是,我看到你在这里抓到的是,你实际上想要调用多个动作方法来渲染一个页面.这不是它的工作原理.您将必须设置模板将在单个操作中引用的对象.这是大多数Rails开发人员将大量代码放在模型中的一个原因,所以在整个控制器上都不会重复安装.
但是还有另一种方式… JavaScript的魔力来了.
<script type="text/javascript" language="javascript"> function load_categories() { <%= remote_function(:url => {:controller => "categories",:action => "list"},:update => "categories")%> }; </script>