我尝试使用数据库中的值填充下拉菜单。
我正在使用:
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>
答案 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标记的字符串。