我正在使用rails 4
,我想在选择下拉菜单中列出类别。我怎样才能做到这一点?我的表格看起来像这样:
<%= f.select (:category_id),
options_for_select([
["Maths", 1],
["Physics", 2]
])
%>
但当然,内容必须是来自数据库的动态,所以我尝试了以下内容:
options_for_select([
@categories.each do |c|
[c.title, c.id]
end
])
但如果我尝试在其#<Category:randomdigetshere>
之外获得相同的输出,则输出options_for_select
,并且标题/ ID将按原样显示。
这样做的正确方法是什么?
答案 0 :(得分:3)
你可以做到
<% categories_array = Category.all.map { |category| [category.title, category.id] } %>
<%= options_for_select(categories_array) %>
或
<%= options_from_collection_for_select(Category.all, :id, :title) %>
您可以使用collection_select
缩短时间答案 1 :(得分:1)
假设您的@categories
格式为:
@categories = Category.all
你可以这样做:
options_for_select(@categories.map { |category| [category.title, category.id] })
答案 2 :(得分:1)
我无法告诉你我有多少次看过这种情况,胖子在我周围寻找。这是我对它的看法,其中包括:
select_tag(:doctor_id,options_for_select([“选择医生”] + @ doctors.map {| doctor | [doctor.full_name,doctor.id]} ,: selected =&gt;:doctor_id),:class =&gt; '形式控制')
请记住,这需要包含在输出标记中,即&lt;%=和%&gt;
options_for_select做的是将数组和格式与所选属性等一起用于原生html选项标记格式。这里发生的是我们使用标题为“选择医生”的元素初始化数组,然后我们追加到一组看起来像[“Bob Smith”,1]
的项目