我在如何创建将子项分配给父项的窗体时遇到问题。我的子节点是在系统中定义的,我转到子节点(别名)并想将其分配给一个父节点(或创建新节点)。我如何创建这样的表单?
class Alias < ActiveRecord::Base
belongs_to :user
belongs_to :contact
end
class Contact < ActiveRecord::Base
has_many :aliases
belongs_to :user
end
因此,我有两个Alias对象和两个Contact,但我不想转到Contact并在那里指定Alias,而是转到Alias,并从(示例)选择框中选择一个Contacts。
有很多方法可以选择关联id。选择框可能是页面上最节省空间的框,但有时如果可能的关联很少,单选按钮会很好地工作。
我认为这样的东西可能适合你。这假设您将@contacts
分配给控制器内类似Contact.all
的对象。
= form_for @alias do |f|
= f.label :contact_id, "Contact"
= f.collection_select :contact_id, @contacts, :id, :full_names
这假设您的联系人中有一个名为"full_names"的字段。在选择框中放入要显示的任何字段。
从Alias
创建Contact
更棘手,我个人不建议这样做
accepts_nested_attributes_for是否适用于belongs_to?
获取fields_for和accepts_nested_attributes_for以使用归属关系
我希望这能有所帮助。