options_from_collection_for_select不会在下拉列表中保存第一个值

时间:2016-03-07 18:55:42

标签: html ruby-on-rails drop-down-menu

我尝试使用数据库中的值填充下拉菜单。

我正在使用:

options_from_collection_for_select

目标是在下拉列表中显示一个值,该值对应于数据库中该行的用户ID,并且在选择值时,将保存该值的id。

我可以使用值填充下拉菜单并成功保存。问题是下拉菜单中的第一个值保存为 -

"<option value=>"

而不是仅保存id(请参阅下面的html源代码)。正确保存所有其他值。 如何使第一个值与其他值一样?

这是代码:

<% options = options_from_collection_for_select(@landlord, "id", "company_name") %>
<%= f.select :landlord_name, [[:all_val, options], ["Other", "Other"]]
, prompt: "Select...", class: "form-control" %>   

这是从控制器传递的:

 @landlord = Landlord.all

这是HTML源代码:

<select name="listing[landlord_name]" id="listing_landlord_name">         
  <option value="">Select...</option>     
  <option value="<option value="9">JOJO</option>
  <option value="10">SHOOKI</option>">all_val</option>
  <option value="Other">Other</option>
</select> 

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正尝试使用@landlord集合中的ID和名称填充select_box,并添加其他&#39;其他&#39;选项到最后。

options_from_collection_for_select方法返回要放在select标记内的HTML字符串,并使用集合名称和ID填充,因此您必须以不同的方式合并选项:

<% options = options_from_collection_for_select(@landlord, "id", "company_name") %>
<%= f.select :landlord_name, options + options_for_select([["Other", "Other"]]), 
    prompt: "Select...", class: "form-control" %>   

代码只是将字符串方式的集合选项附加到options_for_select的输出,这是select选项的一般帮助,也产生要放入select标记的字符串。