如何为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
ergoUser.first.name
和Widget.first.name
问题:
如何将具有相应权重的小部件的下拉选择附加到用户创建/编辑表单?
如何动态地将附加的小部件表单添加到用户或用户表单到小部件以轻松添加或删除这些关系?gem 似乎是完美的
nested_form_for
解决方案,但我无法让它工作。除了模型和表单部分之外,我的控制器是否需要进行任何更改?
快速说明.. 我对在用户表单中创建新小部件或在小部件表单中创建新用户不感兴趣,我只希望能够从现有对象中进行选择。
我正在运行 Rails 3.1 和 simple_form 2.0.0dev 来生成我的表单。