我有三個型號:嵌套模型形式
class Rate < ActiveRecord::Base
attr_accessible :user_id, :car_id, :rate
belongs_to :user
belongs_to :car
end
class User < ActiveRecord::Base
attr_accessible :name
has_many :rates
accepts_nested_attributes_for :rates
end
class Car < ActiveRecord::Base
attr_accessible :name
has_many :rates
accepts_nested_attributes_for :rates
end
和一個控制器:
class UsersController < ResourceController
def new
# Assume user is loaded
@user.rates.build
end
end
我試圖建立一個嵌套形式,將列表關聯用戶/汽車及其相關費率。
喜歡的東西:
<% form_for @user do |f| %>
<%= @user.name %><br />
<% Car.all.each do |car| %>
<%= car.name %><br />
<%= f.fields_for :rates do |r| %>
<%= r.number_field :rate %>
<% end %>
<% end %>
<% end %>
的問題是,我想率模型來存儲數據如下:
USER_ID CAR_ID RATE
1 1 10
1 2 20
1 3 30
2 1 40
3 2 50
我無法弄清楚如何才能正確地構建fields_for
幫手建user_id
和car_id
的適當參數。
喜歡的東西:
user[car=1][rate]
user[car=2][rate]
我已經試過與所述fields_for
這樣更加明確:
<%= r.fields_for 'user[car][rate]' %>
但它仍然沒有打造出來的嵌套參數正常。汽車參數未正確識別。
任何幫助,將不勝感激!謝謝。
編輯: 控制器的操作必須在用戶之下。爲簡潔起見,上面的示例縮短了,但其他與用戶相關的屬性可通過表單獲得,因此必須使用用戶控制器。
答案: 我想出了一個辦法。我有added my own answer解釋它。
我應該添加到原來的問題。該表單與用戶共享其他屬性,而不僅僅是費率。爲了簡潔,我縮短了它。它必須在用戶控制器下。我會更新原來的問題。 – 2013-02-28 03:17:33
不用瞭解細節,我的第一印象是混合更新用戶屬性和添加費率是不合邏輯的。一種形式需要太多關注。不同的行爲有不同的形式,增加率是增加率,更新的形式是更新形式。 – 2013-02-28 03:25:39
這是可能的。我已經添加了我自己的答案,就如何解決它。 – 2013-02-28 19:27:20