【发布时间】:2012-01-11 06:49:51
【问题描述】:
如何为具有附加属性的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、ergo User.first.name 和 Widget.first.name
问题:
如何将具有相应权重的小部件的下拉选择附加到用户创建/编辑表单?
如何动态地将其他小部件表单添加到用户或将用户表单动态添加到小部件以轻松添加或删除这些关系?
nested_form_forgem 似乎是完美的解决方案,但我无法让它发挥作用。除了模型和表单部分,我的控制器是否需要进行任何更改?
快速说明.. 我对在用户表单中创建新小部件或在小部件表单中创建新用户不感兴趣,我只希望能够从现有对象中进行选择。
我正在运行 Rails 3.1 和 simple_form 2.0.0dev 来生成我的表单。
【问题讨论】:
标签: ruby-on-rails ruby nested-forms has-many-through simple-form