如何将所有用户传递给form_for下拉列表?

时间:2014-04-29 13:38:32

标签: ruby-on-rails form-for

我有一个User模型。我希望在form_for中显示一个下拉菜单,用于从User模型中选择用户。我在full_name中有一个方法user,可用于显示用户的全名。如何将用户集合传递给此下拉列表?

2 个答案:

答案 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