- 您正在寻求建立多对一的关系(对一个菜单的许多回复)
- 将您的迁移更改为 t.integer :menu_id
- 创建另一个名为 Menu 的模型,带有 id 和 ie 名称。
因此,请使用以下内容:
# == Schema Information
#
# Table name: replies
#
# id :integer not null, primary key
# menu_id :integer
# ...
# created_at :datetime not null
# updated_at :datetime not null
class Reply < ActiveRecord::Base
attr_accessible :menu_id, etc.
belongs_to :menu, :inverse_of => :replies # belongs_to because has the FK
...
end
# == Schema Information
#
# Table name: menus
#
# id :integer not null, primary key
# name :string(255)
# created_at :datetime not null
# updated_at :datetime not null
class Menu < ActiveRecord::Base
attr_accessible :name
has_many :replies, :inverse_of => :menu, :dependent => :nullify # the FK is in the reply
accepts_nested_attributes_for :replies
end
然后由于您使用的是 SimpleForm:
<%= f.association :menu, :collection => Menu.all, :prompt => "- Select -"%>
然后其他所有内容大部分都为您自动化(即,当您创建/更新回复时,它将获取发布的 menu_id 并相应地分配它。
如果我是你,我会深入研究http://ruby.railstutorial.org/。这是一个极好的资源。
更新:忘记了您的视图显示(如果您尝试显示您选择的菜单的名称 - 如果您尝试显示整个菜单,那是完全不同的场景):
<td><%= @reply.menu.name %></td>