我有一个User
模型。我希望在form_for
中显示一个下拉菜单,用于从User
模型中选择用户。我在full_name
中有一个方法user
,可用于显示用户的全名。如何将用户集合传递给此下拉列表?
答案 0 :(得分:2)
<%= f.collection_select :full_name, User.all.order(:full_name),:id,:full_name,
include_blank: true %>
参考链接:RubyOnRails API
另一种方法,只考虑固定下拉值::
的一个例子现在想要将:温度控制更改为下拉列表,接受热,中,冷值。然后你可以这样做:
<% form_for @article do |f| %>
<%= f.text_field :name %>
<%= f.collection_select :temperature, Article::TEMPERATURES, :to_s, :to_s,
:include_blank => true
%>
<%= f.submit "Create" %> <% end %>
<% end %>
您现在必须在文章模型中定义Article :: TEMPERATURES常量。这应该不是很困难:
class Article < Activerecord::Base
TEMPERATURES = ['hot', 'medium', 'cold']
end
答案 1 :(得分:1)
您可以使用以下内容:
<%= f.select :attribute_name, User.all.collect {|p| [ p.full_name, p.id ] } %>
将attribute_name
替换为您要存储所选值的字段名称。
上面的下拉列表会将显示文字显示为full_name
user
,并且在选择用户后,该用户的id
将存储在attribute_name
中。
注意:由于您未指定要在数据库中存储的值,因此我使用了用户的id
。如果您要存储所选用户的full_name
,请使用p.full_name
代替p.id