2011-12-01 53 views
5

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

所以我想要test_client控制器加载示例数据集,然后呈现客户端控制器的索引视图,以便我可以调整客户端用户界面。就这些。

我想这在test_clients指数法:

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

,但我得到一个错误,因为它无法找到,因为它是寻找在当前控制器查看它们的客户端的谐音...

所以我已经研究过这个问题,大多数人都说你不应该打这样的电话,但我认为这种情况是一个合理的用法......我只需要弄清楚如何让它工作。

+0

你使用的是git吗?因为这对于git分支恕我直言很好用。 – lucapette

+0

我实际上使用svn,但这是一个好主意。我可能会尝试在我的下一个项目上。 – german129

回答

6

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

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

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

你会希望它改成这样:

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

这种解决方案工作正常,即使我不是一个控制器硬编码的巨大风扇,它不会影响我的任何东西,除非我重命名控制器。 – german129

+1

如果这是一个在多个控制器中使用的部分,我通常把它们放在'app/views/shared'下,然后你执行'render:partial =>'shared/info''或类似的东西。可能想更好地命名它。 – Mario

0

你可以用多种方式做到这一点,每个人都是不同的。你可以做到这一点的一种方法是将你的发现者变成主持人。然后将索引视图中的一些数据转换为部分数据,或者可以将布局设置为false的模板进行渲染。

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

2

将您的客户机控制器的看法,以谐音,创建所有空观点test_client控制器中的操作,呈现各个test_client视图的客户端部分。

示例:
客户端视图
index.html.erb到_index.html.erb

test_client视图
index.html.erb
在此视图中,<%=渲染:局部= >'clients/index',:locals => {}%>

相关问题