渲染另一个控制器的视图

时间:2011-12-01 17:57:56

标签: ruby-on-rails ruby

我想要做的是有2个不同的控制器,client和test_client。客户端控制器已经构建,我想创建一个test_client控制器,我可以使用它来使用客户端的UI并根据需要进行调整。我主要试图绕过我在客户端内置的验证以及它对加载数据的管理控制器的依赖。

所以我希望test_client控制器加载一个示例数据集,然后渲染客户端控制器的索引视图,以便我可以调整客户端UI。就是这样。

我在test_clients索引方法中试过这个:

class TestClient
    def index
        render :template => 'client/index'
    end
end

但我得到一个错误,因为它找不到客户端部分,因为它正在查看它们的当前控制器视图...

所以我已经对此进行了调查,并且大多数人都说你不应该打电话,但我认为这种情况是合理的用法......我只需要弄清楚如何让它发挥作用。

3 个答案:

答案 0 :(得分:6)

您需要调整视图,以便所需部分路径的格式为'controller/partial'。在这种情况下可能是'client/partial'。然后您可以像以前一样使用render 'client/index'

所以在你看来的某个地方说你有这个:

<%= render :partial => 'info' %>

您需要将其更改为:

<%= render :partial => 'client/info' %>

答案 1 :(得分:2)

将客户端控制器视图转换为partials,为test_client控制器中的所有操作创建空视图,为各个test_client视图渲染客户端部分。

例:
客户观点
index.html.erb到_index.html.erb

test_client视图
index.html.erb
 在此视图中,&lt;%= render:partial =&gt; 'clients / index',:locals =&gt; {}%&gt;

答案 2 :(得分:0)

你可以通过多种方式做到这一点,每个人都不同。你可以做到的一种方法是将你的发现者放入演示者。然后将索引视图中的某些数据转换为部分数据,或者可以使用布局设置为false来呈现模板。

然后在client_test视图中,您可以使用与之关联的演示者呈现该索引。