我有三个模型:
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 %>
问题是我希望 Rate 模型按如下方式存储数据:
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]' %>
但它仍然没有正确构建嵌套参数。未正确识别汽车参数。
任何帮助,将不胜感激!谢谢。
编辑:控制器动作必须在用户之下。为简洁起见,上面的示例已被缩短,但其他与用户相关的属性可通过表单获得,因此它必须使用 users 控制器。
回答:我想出了一个办法。我添加了自己的答案来解释它。