我如何为具有其他属性的 has_many :through
关联生成表单字段?
has_many :through
关系有一个名为 weight
的额外列。
这是联接表的迁移文件:
create_table :users_widgets do |t|
t.integer :user_id
t.integer :widget_id
t.integer :weight
t.timestamps
end
模型长这样:
User
has_many :widgets, :through => :users_widgets,
:class_name => 'Widget',
:source => :widget
has_many :users_widgets
accepts_nested_attributes_for :widgets # not sure if this is necessary
Widget
has_many :users, :through => :users_widgets,
:class_name => 'User',
:source => :user
has_many :users_widgets
accepts_nested_attributes_for :users # not sure if this is necessary
UsersWidget
belongs_to :user
belongs_to :widget
为了简化,Widget和User只有一个自己的字段叫做“name”,因此
User.first.name
和Widget.first.name
。问题:
1.如何在用户创建/编辑表单中添加下拉选择小部件与相应的重量?
2.如何动态地向用户添加其他Widget表单或向Widget添加其他用户表单以轻松添加或删除这些关系?
nested_form_for
宝石似乎是完美的解决方案,但我还没有能够使其正常工作。3.除了模型和表单局部之外,是否需要对我的控制器进行任何更改?
快速提示..我不感兴趣在用户表单中创建新的Widget或在Widget表单中创建新的用户,我只想选择现有对象。
我正在运行Rails 3.1和simple_form 2.0.0dev来生成我的表单。