我有一个被称为“节目”控制器的图。里面那个观点,我想呈现另一个控制器的视图的内容 - 显然,对这种观点的形式逻辑去跟它属于太控制器。我该怎么做呢?我是相当新的轨道,我不自信的框架还没有100%。

您几乎可以考虑在视图中对其“小部件”。我知道你可以使通过使用从上视图的相同的控制器操作:

render :action => "show_home_page", :layout=> false

,但我需要它呈现来自另一个控制器的动作(图)。

  

我有一个观点,这是   呈现到的布局。这种观点,   属于控制器A.   我需要呈现“指数”和“新”   原始视图内部视图从控制器B(上面)

有帮助吗?

解决方案

在你的问题的术语是有点困惑。如果是在一个控制器,并且希望在其他操作方法在另一个控制器执行代码和渲染它的模板,你应该redirect_to的这一行动。比方说,另一个控制器被称为ContractsController

redirect_to :controller => "contracts", :action => "show_home_page"

如果你只是想使用视图模板从另一个方法,从动作的响应,你只需要在渲染参数的前缀控制器的名称。这不会打电话的动作,它将只使用它的模板。

例如,如果模板为生活合同控制器文件夹中。

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>

如果你调用在onload甚至你的页面,它会与ID为“类别”更换分度,从引用的操作响应。

其他提示

如果你真的想完全呈现另一种操作(即模拟的请求要经过整个Ruby on Rails的堆栈),你可以使用的 Webrat (检查 Webrat这里截屏)。

在传统的MVC Web应用程序,你应该很少有需要做到这一点。但以我的经验开发SOFEA风格和的微架构的webapps 的,这是越来越常见。

我不知道我完全理解您的问题声明(为什么必须从视图中进行),但我要说,你只需要调用来自控制器A redirect_to到控制器B。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top