我很抱歉补救问题的冲击,但我一直在盯着这个一个多小时,它似乎与我的代码中的其他示例相匹配。我的下拉框没有按照我的预期填充。为什么我的下拉框没有填充?
这里是我的看法的全部:
<%= 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 %>
在轨控制台我得到这个:
>> 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
,并开始收到此错误:
未定义的方法`合并”为 “\ n”:的ActiveSupport :: SafeBuffer
一些快速谷歌搜索建议我删除f.select中的f.
部分。但是,这导致下拉框的宽度缩小并保持空白。
不知道这仅仅是当你将这些代码到一个#1错字,但看起来你在这一行缺少空间:'<%= H distribution.type%>'(前的字中,h ')。 – Batkins 2011-12-19 17:09:01
感谢您的追捕,但它似乎没有任何区别。 – Ramy 2011-12-19 17:19:47
看起来您不需要'options_for_select',只需输入'Distribution.select(:status).group(:status).order(:status).map {| d | [d.status,d.status]}'作为参数,而不调用'options_for_select'方法。 http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select – Batkins 2011-12-19 17:25:31