Создание раскрывающегося списка Rails для связанной базы данных - PullRequest
8 голосов
/ 19 января 2011

У меня есть 2 модели, места и области (области состоят из полей id и name). Они связаны как: одна область имеет много мест, и каждое место принадлежит области.

Чтобы назначить место для области, я в настоящее время ввожу номер area_id в текстовое поле на странице создания нового места. Затем я могу отобразить, к какой области относится место проведения:

<%= venue.area.name %>

Вместо того, чтобы вводить идентификационный номер области в форме, я хотел бы иметь раскрывающийся список с именами областей для всех записей области и для выбранного, который будет связан с этим местом при сохранении.

Форма нового места проведения:

<% form_for @venue do |f| %>
  <p>name: <br>
  <%= f.text_field :name %></p>

  <p>address line 1: <br>
  <%= f.text_field :addressline1 %></p>

  <p>address line 2: <br>
  <%= f.text_field :addressline2 %></p>

  <p>address line 3: <br>
  <%= f.text_field :addressline3 %></p>

  <p>area_id: <br>
  <%= f.text_field :area_id %></p>

  <%= submit_tag %>
<% end %>

Я пытался:

  <p>area_id: <br>
  <%= collection_select(:area, :name, @areas, :id, :name) %>

Но получите:

У вас есть нулевой объект, когда вы этого не сделали ожидайте!
Вы могли ожидать экземпляр массива.
Произошла ошибка при оценке nil.map

Любая помощь очень ценится!

Ответы [ 2 ]

29 голосов
/ 19 января 2011

Похоже, что @areas не определено, и, возможно, пара других проблем.Попробуйте это:

<%= f.collection_select(:area_id, Area.all, :id, :name) %>
0 голосов
/ 15 февраля 2014

Как сказал Нобл, это правильно!Если вы хотите заказать по имени, просто используйте следующее:

<%= f.collection_select :area_id, Area.order(:name), 
    :id, :name %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...