我有一个房间模型和一个人模型。
一个房间可以有很多人,一个人可以有一个房间。
在房间创建屏幕上,我可以将此人“链接”到这个新房间 所以我希望有一个可变数量的选择标签,其中包含所有人的列表
我不知道如何构建select标签。
任何人都可以提供帮助
感谢...
我有以下协会
class Room < ActiveRecord::Base
has_many :people
accepts_nested_attributes_for :people
end
class Person < ActiveRecord::Base
belongs_to :room
end
我使用partial来构建房间/新表格
<% form_for(@room) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :date %><br />
<%= f.date_select :date %>
</p>
<% f.fields_for :people do |builder| %>
<p>
<%= builder.label :person_id, "Person" %><br />
<%= select 'room', 'people', Person.all.collect{|person| [person.name, person.id]}%>
</p>
<% end %>
<p>
<%= f.label :comment %><br />
<%= f.text_area :comment %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
答案 0 :(得分:2)
查看ActionView::Helpers::FormOptionsHelper模块。它提供了collection_select方法。
这部分可以满足您的需求:
<% form_for(@room) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :date %><br />
<%= f.date_select :date %>
</p>
<p>
<%= f.label :people_ids, "Person" %><br />
<%= collection_select :people_ids, Person.all, :name, :id, {:multiple => true} %>
</p>
<p>
<%= f.label :comment %><br />
<%= f.text_area :comment %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
答案 1 :(得分:2)
很好......快速回答谢谢!
这里测试的代码是正确的
<% f.fields_for :people do |builder| %>
<p>
<%= builder.label :person_id, "Person" %><br />
<%= builder.collection_select :person_id, Person.all, :id, :name, {:multiple => true} %>
</p>
<% end %>