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