私は3つのモデルを持っています:
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
そして1つのコントローラー:
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]' %>
ただし、ネストされたパラメータは適切に作成されません。車のパラメータが正しく識別されていません。
どんな助けでもいただければ幸いです!ありがとう。
編集:コントローラーのアクションはユーザーの下にある必要があります。上記の例は簡潔にするために短縮されていますが、他のユーザー関連の属性はフォームから利用できるため、ユーザーコントローラーを使用する必要があります。
答え:私はそれを行う方法を考え出しました。私はそれを説明する私自身の答えを追加しました。