RubyOnRails вложенное / зависимое выпадающее меню - PullRequest
0 голосов
/ 15 июля 2011

У меня есть вид с 3 выпадающего списка.Например, у меня есть Страна, Штат и Город, и в представлении, когда пользователь выбирает Страна = США, в раскрывающемся списке «Штат» он должен заполнить список только штатов США, а при выборе штата в раскрывающемся списке нужно только вызватьГорода под этим государством.Моя база данных настроена правильно (в поле State указаны имя штата и поле country_id, а в поле City указаны название города и идентификатор штата)

Я реализовал следующее, на мой взгляд, но это принесет мне все записи независимо от выбора пользователя.

<div class="field">
  <%= f.label :sector, "Sector" %>
  <%= f.collection_select :sector_id, Sector.all, :id, :nombre, :prompt => false  %>
</div>
<div class="field">
  <%= f.label :municipio %>
  <%= f.collection_select :municipio_id, Municipio.all, :id, :nombre, :prompt => false  %>
</div>
<div class="field">
  <%= f.label :provincia %>
  <%= f.collection_select :provincia_id, Provincia.all, :id, :nombre, :prompt => false  %>
</div>

Как я могу сделать этих выпадающих зависимостей друг от друга?

1 Ответ

0 голосов
/ 15 июля 2011

Возможно, стоит попробовать добавить опцию, которая станет такой:

<%= f.label :state%>
<%= f.collection_select :country, :state_id, State.all, :id, :nombre, :prompt => false  %>
</div>
<div class="field">
<%= f.label :city%>
<%= f.collection_select :state, :city_id, City.all, :id, :nombre, :prompt => false  %>
</div>

Первые три опции в collection_select - это объект, метод, коллекция.Так что это все равно, что сказать, получить идентификаторы состояния, принадлежащие вашему экземпляру страны, и вернуть те, которые находятся в коллекции, возвращенной State.all.

И убедитесь, что ваши модели настроены правильно:

class State < ActiveRecord::Base
  belongs_to :country
end
class City < ActiveRecord::Base
  belongs_to :state
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...