为什么我的下拉框没有填充?

时间:2011-12-19 16:58:46

标签: ruby-on-rails ruby-on-rails-3 forms drop-down-menu

我很抱歉有一些补救问题的冲击,但我一直盯着这个问题超过一个小时,它似乎与我的代码中的其他例子相符。我的下拉框未按预期填充。

这是我的全部观点:

<%= 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.部分。然而,这导致下拉框的宽度缩小并保持空白。

1 个答案:

答案 0 :(得分:3)

摆脱options_for_select(部分(以及最后的括号)。

Distribution.select(:status).group(:status).order(:status).map { |d| [d.status, d.status] }

应该提供您所需要的一切。

修改(重新评论)

:distro位于form_forf.select自动添加。

<%= f.select :status, Distribution.select(:status).group(:status).order(:status).map { |d| [d.status, d.status] }, :include_blank => "-- Select One --" %>
相关问题