在我的第一個rails應用程序中,我試圖使用form_for
和fields_for
創建一個嵌套對象窗體。到目前爲止這麼好,但我不知道如何在fields_for
塊中訪問子對象。我已經在子對象中預填充了一個字段,其中包含要顯示在用戶說明中的數據。Rails - 使用form_for和fields_for,如何在fields_for塊中訪問子對象?
模式
車庫:
has_many :cars, :dependent => :destroy
accepts_nested_attributes_for :cars
汽車:
belongs_to :garage
車庫控制器
def new
@garage = Garage.new
for i in 1..5
@garage.cars.build :stall_number => i
end
end
_form.html.erb
<%= form_for @garage do |f| %>
<%= f.label :title, "Garage Name" %><br />
<%= f.text_field :title %>
<% f.fields_for :cars do |builder| %>
<p>Enter license for car parked in stall: <%= car.stall_number %></p>
<%= f.label :license, "License #:" %><br />
<%= f.text_field :license %>
<%= end %>
<%= end %>
正如你所看到的,對於建設者塊中:汽車,我想表明,我的用戶指令,場:car.stall_number
(已在我的控制器一個整數):
<p>Enter license for car parked in stall: <%= car.stall_number%></p>
我已經嘗試了許多不同的想法:@car.stall_number
,object.car.stall_number
等,沒有喜悅。多次搜索和查看fields_for
源代碼並沒有幫助我理解。我將不勝感激任何指導。
更新:爲了清楚起見,每丹的建議,我已經試過builder.stall_number
但它會導致
NoMethodError: undefined method 'stall_number' for #<ActionView::Helpers::FormBuilder:0x00000102a1baf0>
對不起丹,我應該提到,「建設者。「stall_number」是我第一次嘗試,但不幸使用它我得到: NoMethodError - 未定義的方法`stall_number'爲#。 任何想法它可能意味着什麼?謝謝! –
2011-02-18 07:18:20
在你的控制器中你建立了汽車模型!然後你也需要參考他們。看看我發佈的代碼。對於每個攤位你需要有你自己的子窗體@ garage.stalls指的是所有5個攤位,因此Ruby不知道你想使用哪一個 您可以嘗試以下操作,使用您的代碼並替換:帶有@ garage.cars [1]的汽車,並將car.stall_number更改爲builder.stall_number – Dan 2011-02-18 09:59:27