从不同的控制器渲染视图

时间:2009-10-26 06:23:04

标签: ruby-on-rails

说我有控制器苹果和蜜蜂,以及两者中的新动作。在Bee的新动作中,我设置了一些变量以便在'bees / new'中显示。我碰巧也想从Apples的新方法渲染这个相同的模板。在这种情况下,设置变量的正确方法是什么?我认为复制蜜蜂的任务不是正确的方法。

2 个答案:

答案 0 :(得分:0)

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

然后,在常规的apples / 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?”演示逻辑的方法。

答案 1 :(得分:0)

快速说明:您也可以将该逻辑压缩为一行:

 “apples / apples_new”if @ bees.has_apples? %GT;