Rails select helper - По умолчанию выбрано значение, как? - PullRequest
174 голосов
/ 08 марта 2009

Вот код, который я сейчас использую:

<%= f.select :project_id, @project_select %>

Как изменить его так, чтобы при загрузке страницы его значение по умолчанию равнялось params[:pid]?

Ответы [ 14 ]

210 голосов
/ 10 марта 2009

Это должно сделать это:

<%= f.select :project_id, @project_select, :selected => params[:pid] %>
123 голосов
/ 12 марта 2010

Использовать правильный атрибут текущего экземпляра (например, @work.project_id):

<%= f.select :project_id, options_for_select(..., @work.project_id) %>
49 голосов
/ 23 июля 2011

Рельсы 3.0.9

select options_for_select([value1, value2, value3], default)
27 голосов
/ 12 апреля 2014

Проблема со всеми этими ответами состоит в том, что они устанавливают в поле значение по умолчанию, даже если вы пытаетесь редактировать свою запись.

Вам необходимо установить значение по умолчанию для вашего существующего значения, а затем только установить его на фактическое значение по умолчанию, если у вас нет значения. Вот так:

f.select :field, options_for_select(value_array, f.object.field || default_value)

Для тех, кто не знаком с f.object.field, вы всегда используете f.object, затем добавьте имя вашего поля в конце этого.

21 голосов
/ 26 января 2012

Попробуйте это:

    <%= f.select :project_id, @project_select, :selected => f.object.project_id %>
10 голосов
/ 11 марта 2009

если params [: pid] - строка, которая, если она пришла из формы, вероятно, вам понадобится

params[:pid].to_i  

для правильного пункта, который будет выбран в списке выбора

9 голосов
/ 09 марта 2009

Я нашел решение и обнаружил, что я довольно неопытен в RoR.

Внутри контроллера, который управляет видом, описанным выше, добавьте:

@work.project_id = params[:pid] unless params[:pid].nil?
6 голосов
/ 02 сентября 2011
<%= f.select :project_id, @project_select, :selected => params[:pid] %>
3 голосов
/ 18 октября 2016

Я не смог заставить это работать и обнаружил, что мне нужно добавить атрибут "selected" html не только в правильный тег <option>, но и также в тег <select>. Документы MDN по выбранному атрибуту тега выбора говорят:

selected - Логический атрибут указывает, что конкретная опция может быть изначально выбрана.

Это означает, что код должен выглядеть следующим образом:

f.select :project_id, options_for_select(@project_select, default_val), html: {selected: true}
2 голосов
/ 13 апреля 2012
<%= f.select :project_id, options_from_collection_for_select(@project_select,) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...