1

假设我有三个表来容纳多对多关系。

class User < ActiveRecord::Base
    has_many :user_hobbies
    has_many :hobbies, :through => :user_hobbies
end
class UserHobbies < ActiveRecord::Base
    belongs_to :user
    belongs_to :hobby
end
class Hobby < ActiveRecord::Base
    has_many :user_hobbies
    has_many :users, :through => :user_hobbies
end

我希望有一个表单,用户可以在其中输入任意数量的爱好,每个爱好都将存储到正确的表中(在我的情况下,“爱好”表是预设的,用户可以从枚举值中进行选择,不要添加它们)

我将如何制作一个表格来实现这一目标?我会为自动完成和动态字段使用 JavaScript(即,每次您输入一个字段时,都会出现另一个字段)。

4

1 回答 1

0

为了生成此表格,您可以使用两个选项。

一个。第一个选项是使用虚拟属性,该属性将接受用户爱好的逗号分隔值,然后当您保存用户时,虚拟属性将设置与相应用户相对应的爱好。请参阅此 railcast

http://railscasts.com/episodes/16-virtual-attributes

http://railscasts.com/episodes/167-more-on-virtual-attributes

湾。第二个选项是使用accepts_nested_attributes_for,它会自动包含父模型中嵌套关系的属性...有关accepts_nested_attributes_for的更多信息,请参阅API

我还可以在上述定义中看到一个错误,因为在爱好表中应该有 has_many :users :through :user_hobbies 关系,因为我们可能想知道用户拥有..

就自动完成而言,有一个名为 auto-complete-rails 的 gem,它的文档非常简单且易于使用和理解。

于 2012-11-05T07:50:59.887 回答