我很抱歉有一些补救问题的冲击,但我一直盯着这个问题超过一个小时,它似乎与我的代码中的其他例子相符。我的下拉框未按预期填充。
这是我的全部观点:
<%= form_for :distro, :url => update_multiple_admin_distributions_workflows_path, :html => { :method => :put } do |f| %>
<ul>
<% for distribution in @distros %>
<li>
<%= hidden_field_tag "distribution_ids[]", distribution.id %>
<%=h distribution.type %>
</li>
<% end %>
</ul>
<p>
<%= f.label :status %><br />
<%= f.select :status, options_for_select(Distribution.select(:status).group(:status).order(:status).map { |d| [d.status, d.status] }), :include_blank => true %>
</p>
<p><%= f.submit "Submit" %></p>
<% end %>
在rails控制台中我得到了这个:
>> Distribution.select(:status).group(:status).order(:status).map {|d| [d.status, d.status]}
[["delivered", "delivered"], ["follow up", "follow up"]]
Distribution Load (0.5ms) SELECT status FROM "distributions" GROUP BY status ORDER BY status
这似乎是我正在寻找的名单。
更新
我修改了选择帮助行并添加了:distro
并开始收到此错误:
未定义的方法`merge&#39; for&#34; \ n&#34;:ActiveSupport :: SafeBuffer
一些快速谷歌搜索建议我从f.select中删除f.
部分。然而,这导致下拉框的宽度缩小并保持空白。
答案 0 :(得分:3)
摆脱options_for_select(
部分(以及最后的括号)。
Distribution.select(:status).group(:status).order(:status).map { |d| [d.status, d.status] }
应该提供您所需要的一切。
修改(重新评论)
:distro
位于form_for
,f.select
自动添加。
<%= f.select :status, Distribution.select(:status).group(:status).order(:status).map { |d| [d.status, d.status] }, :include_blank => "-- Select One --" %>