gpt4 book ai didi

ruby-on-rails - 通过与其他属性关联的 has_many 的 Rails 形式?

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:18 24 4
gpt4 key购买 nike

如何为具有附加属性的 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.nameWidget.first。姓名

问题:

  • 如何将具有相应权重的 Widgets 下拉选择附加到用户创建/编辑表单?

  • 如何向用户动态添加其他小部件表单或向小部件动态添加用户表单以轻松添加或删除这些关系? nested_form_for gem 似乎是完美的解决方案,但我无法让它工作。

  • 除了模型和部分表单之外,我的 Controller 是否需要进行任何更改?


快速说明.. 我对在用户表单中创建新的小部件或在小部件表单中创建新用户不感兴趣,我只希望能够从现有对象中进行选择。

我正在运行 Rails 3.1 和 simple_form 2.0.0dev 来生成我的表单。

最佳答案

我将使用 cocoon 解决您的问题,我创建的用于处理动态嵌套表单的 gem。我还有an example project展示不同类型关系的例子。

从字面上看并没有包括你的,但并不难从中推导出来。在你的模型中你应该写:

class User 
has_many :users_widgets
has_many :widgets, :through -> :user_widgets

accepts_nested_attributes_for :user_widgets, :reject_if => :all_blank, :allow_destroy => true

#...
end

然后您需要创建一个部分 View ,它将列出您链接的 UserWidgets。将此部分放在名为 users/_user_widget_fields.html.haml 的文件中:

.nested-fields
= f.association :widget, :collection => Widget.all, :prompt => 'Choose an existing widget'
= f.input :weight, :hint => 'The weight will determine the order of the widgets'
= link_to_remove_association "remove tag", f

在你的 users/edit.html.haml 中你可以这样写:

= simple_form_for @user do |f|
= f.input :name

= f.simple_fields_for :user_widgets do |user_widget|
= render 'user_widget_fields', :f => user_widget
.links
= link_to_add_association 'add widget', f, :user_widgets

希望这对您有所帮助。

关于ruby-on-rails - 通过与其他属性关联的 has_many 的 Rails 形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8352977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com