我想使用下拉列表列出我的所有项目,第一个选项是空白的。
但是当我添加:include_blank =>是的,它不起作用。
就像那样:
<%= f.select(:project_id, :include_blank => true) do %>
<% @projects.each do |p| %>
<%= content_tag(:option, p.name, value: p.id) %>
<% end -%>
<% end -%>
但如果我使用
<%= f.select(:title, %w{ Male Female }, :include_blank => true) %>
完全正常! 我不知道如何修改第一个代码以显示空白。
谢谢!
答案 0 :(得分:0)
我认为问题是<%= content_tag … %>
。试试这个:
<%= f.select(:project_id, :include_blank => true) do
@projects.each do |p|
content_tag(:option, p.name, value: p.id)
end
end %>
(即只有一个ERB输出嵌入标记)
更新:再看看这个,你不是真的自定义选项的生成方式,你真的需要块吗?
<%= f.select(:project_id, @projects.collect { |p| [p.name, p.id] }, :include_blank => true) %>
答案 1 :(得分:0)
像这样使用:
<%= f.select :category_id, nil, :include_blank => true %>
在文档API LINK
中 select(object, method, choices = nil, options = {}, html_options = {}, &block)
答案 2 :(得分:0)
你可以这样做:
<%= f.select(:project, :id, @projects.collect {|p| [ p.name, p.id ] }, {:include_blank => true}) %>
或者
<%= f.select(:project_id, @projects.collect {|p| [ p.name, p.id ] }, {:include_blank => true}) %>
或者您可以使用提示符:
<%= f.select(:project, :id, @projects.collect {|p| [ p.name, p.id ] }, {:prompt => 'select project'}) %>