如何在以下(简单)情况下使用collection_select?

时间:2012-12-04 13:20:01

标签: ruby-on-rails-3

我有这两个型号:

class Person < ActiveRecord::Base
  attr_accessible :contact, :name

  validates :name, :presence => true

  has_many :books

end

class Register < ActiveRecord::Base
  attr_accessible :checkin, :checkout, :notes, :person, :book

end

在registers / _form.html.erb中我想使用f.collection_select,我可以从列表中选择一个Person的名字。 Register模型的目的是记录结账历史。

这是我第一次尝试使用collection_select而我无法用我在stackoverflow和google上阅读的示例包围它。也许我没有模型中所需要的一切?

请帮忙。

1 个答案:

答案 0 :(得分:0)

关于关联,模型中存在错误。正确的关联应该是:

class Person < ActiveRecord::Base
   has_many :registers, :inverse_of => :person
end

class Register < ActiveRecord::Base
   belongs_to :person, :inverse_of => :registers
end

然后在你的registers/_form.html.erb中,您必须拥有以下内容:

<%= form_for :register do |f| %>
   <% # ... input elements for the rest of the Register model %>

   <%= f.collection_select :person_id, Person.all, :id, :name %>

   <% # ... input elements for the rest of the Register model %>

   <%= f.submit %>
<% end %>