我想从模型"公司"创建一个带有Ruby on rails的下拉列表。有一个项目电话"名称"。我希望下拉列表的长度与Company.count(动态)
一样长例如,"公司"中的3个元素:
<%= f.select :company_brand, [[Company.find(1).name, Company.find(1).id],[Company.find(2).name, Company.find(2).id],[Company.find(3).name, Company.find(3).id]]%>
答案 0 :(得分:1)
collection_select
(documentation)将提供您所需的内容:
collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})
对象类的方法的现有返回值集合的返回和标记。将选择从实例对象上的调用方法返回的值。如果调用方法返回nil,则不进行选择而不在选项哈希中包含:prompt或:include_blank。
:value_method和:text_method参数是要在集合的每个成员上调用的方法。返回值分别用作每个标记的值属性和内容。它们也可以是响应调用的任何对象,例如proc,将为集合的每个成员调用以检索值/文本。
对于您的用例,这意味着将代码更改为:
<%= f.collection_select(:company_brand, Company.all, :id, :name) %>
答案 1 :(得分:1)
你可以这样做:
<%= select(:company_brand, Company.all.collect {|c| [ c.name, c.id ] }, { include_blank: true }) %>
答案 2 :(得分:0)
你可以试试这个,我想这会对你有帮助。
<%= f.select :company_brand, options_from_collection_for_select(Company.all, "id", "name") %>
答案 3 :(得分:0)
#League - form.html.erb
<%= f.collection_select(:game_id, Game.order(:title), :id, :title, {prompt: true}, {class: 'form-control col-md-7 col-xs-12', required: "required"})%>
#.html_output
<select class="form-control col-md-7 col-xs-12" required="required" name="league[game_id]" id="league_game_id"><option value="">Please select</option>
<option value="2">csgo</option>
<option value="1">dota2</option>
</select>