почему мой раскрывающийся список не заполнен? - PullRequest
0 голосов
/ 19 декабря 2011

Я прошу прощения за натиск исправительных вопросов, но я смотрел на него более часа, и, похоже, он соответствует другим примерам в моем коде.Мой выпадающий список не заполняется так, как я ожидаю.

Вот мой взгляд полностью:

<%= 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 'для" \ n ": ActiveSupport :: SafeBuffer

некоторые быстрые поиски в Google предложили удалить часть f. из f.select.Однако это привело к уменьшению ширины выпадающего списка и оставлению пустым.

1 Ответ

3 голосов
/ 19 декабря 2011

Избавьтесь от части 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 --" %>
...