Установить выбранное значение в раскрывающемся списке на основе свойства модели - PullRequest
1 голос
/ 12 января 2012

У меня есть простой выпадающий список, например:

<%= collection_select("user_cities", "city_id", current_user.cities, :id, :name ) %>

current_user.cities - это массив городов пользователей.У каждого города есть поле с именем «is_primary», и только один город имеет значение true.

Мой вопрос заключается в том, как сделать вышеуказанный collection_select (или преобразовать его при необходимости), чтобы он выбиралопция, основанная на City.is_primary?

Ответы [ 3 ]

3 голосов
/ 12 января 2012

С документы :

По умолчанию post.person_id [в вашем случае user_cities.city_id] - выбранная опция.Укажите :selected => value, чтобы использовать другой выбор, или :selected => nil, чтобы оставить все опции невыбранными.

Вооружившись этим знанием, мы можем передать соответствующий параметр collection_select:

<%= collection_select "user_cities", "city_id", current_user.cities, :id, :name,
      :selected => current_user.cities.detect(&:is_primary).id
%>
1 голос
/ 12 января 2012

Я бы начал с определения метода с именем primary_city в вашей пользовательской модели.

def primary_city
  cities.where(:is_primary => true).first
end

Затем,

<%= collection_select("user_cities", "city_id", current_user.cities, :id, :name, { :selected=> current_user.primary_city.id } ) %>
1 голос
/ 12 января 2012
collection_select("user_cities", "city_id", current_user.cities, :id, :name,{:selected => current_user.cities.where(:is_primary => 1)})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...