我想實現帶有fields_for的rails形式的主細節。Rails 3使用fields_for在視圖中不起作用
我稱之爲一種模式方藥:
class Recipe < ActiveRecord::Base
validates :name, :presence => true
validates :directions, :presence => true
has_many :recipe_ingredients
end
和一個模式叫RecipeIngredient:
class RecipeIngredient < ActiveRecord::Base
belongs_to :recipe
#belongs_to :ingredient
end
在新的控制器I填充成分與三個空的記錄是這樣的:
def new
@recipe = Recipe.new
3.times {@recipe.recipe_ingredients.build}
# @ingredients = RecipeIngredient.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @recipe }
end
end
我想在視圖中做的是輸出食譜字段(哪些工作沒關係)和配方原料的三個領域。在視圖的上半部分我有這樣的:
<%= form_for :rec do |f| %>
我然後列出其正確顯示,如配方領域:
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
然後我嘗試顯示配料線路,但代碼永遠不會似乎進入了fields_for部分:
第一次嘗試:
<% for ingredient in @recipe.recipe_ingredients %>
This prints out three times
<% fields_for "...", ingredient do |ingredient_form| %>
But this never prints out
<p>
Ingredient: <%= ingredient_form.text_field :description %>
</p>
<% end %>
<% end%>
我有recipe_ingredients中的三個空行和for循環似乎迭代了三次,但fields_for中的代碼從不觸發。
第二個嘗試:
<% for recipe_ingredient in @recipe.recipe_ingredients %>
b
<% fields_for "...", recipe_ingredient do |recipe_ingredient| %>
Rec: <%= recipe_ingredient.text_field :description %>
<% end %>
<% end %>
第三次嘗試(基於這裏的答案):
<% form_for :recipe do |f| %>
<% f.fields_for ingredients do |ingredient_form| %>
<p>
Ingredient: <%= ingredient_form.text_field :description %>
</p>
<% end %>
<% end %>
有什麼明顯的,我做錯了什麼?
謝謝t他回答。 我上面有這個: <%= form_for(@recipe)do | f | %> 當我嘗試你的代碼中,我得到以下錯誤: 未定義的局部變量或方法'成分爲#<#<類別:0x00000101e9fd20>:0x00000101e9b900> – gugguson 2010-09-25 13:33:10
@gugguson - 我有‘成分’,而是指「:成分「 - 符號成分會告訴form_for(食譜)調用成分數組。 – 2010-09-25 20:46:21
太棒了 - 工作。感謝您的幫助。小問題:我將如何去在Show視圖中使用它? – gugguson 2010-09-25 21:40:09