2009-10-26 52 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? %>
相關問題