我很抱歉補救問題的衝擊,但我一直在盯着這個一個多小時,它似乎與我的代碼中的其他示例相匹配。我的下拉框沒有按照我的預期填充。爲什麼我的下拉框沒有填充?
這裏是我的看法的全部:
<%= 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