2009-10-26 54 views
0

说我有控制器苹果和蜜蜂,并在两个新的行动。在Bee的新动作中,我设置了一些变量用于显示“蜜蜂/新”。我碰巧也想从苹果的新方法渲染这个相同的模板。在这种情况下设置变量的正确方法是什么?我认为抄袭蜜蜂的作业并不是正确的做法。从不同的控制器渲染视图

回答

0

如果您打算在多个地方展示它,最好的方法是使用部分。您可以将所有相关的视图代码移到一个部分(我们称之为“apples_new”,这意味着您将它保存为/app/views/apples/_apples_new.html.erb)。

然后,在你的定期苹果/ new.html.erb查看您可以直接调用部分:

<!-- /app/views/apples/new.html.erb --> 
<h1>Apples New</h1> 
<%= render :partial => "apples_new" %> 

而在你的蜜蜂 “新” 的观点,你可以这样做:

<!-- /app/views/bees/new.html.erb --> 
<h1>Bees New</h1> 
<% if @bees.has_apples? $> 
    <%= render :partial => "apples/apples_new" %> 
<% end %> 

请注意,在我上面的示例中,我添加了一些逻辑。我假设你只想在某些场景中调用相同的表单,所以我添加了“has_apples?”方法来演示逻辑。

0

快速注:您还可以压缩逻辑成一行:

“苹果/ apples_new” 如果@ bees.has_apples? %>
相关问题