Вот фрагмент кода, который я сейчас использую:
<%= f.select :project_id, @project_select %>
Как изменить его, чтобы сделать его значение по умолчанию равным тому, params[:pid]
когда страница загружается?
ruby-on-rails
totocaster
источник
источник
Ответы:
Это должно сделать это:
источник
options_for_select
это лучший способ. Это хорошо для любой ситуации, хорошо для редактирования формы тоже.Используйте правильный атрибут текущего экземпляра (например
@work.project_id
):источник
select_tag
тоже работает . Спасибо, это действительно помогло мне тоже.options_for_select(..., f.object.project_id )
Rails 3.0.9
источник
value3], default
Проблема со всеми этими ответами состоит в том, что они устанавливают в поле значение по умолчанию, даже если вы пытаетесь редактировать свою запись.
Вы должны установить по умолчанию к существующему значению , а затем только установить его на фактическое значение по умолчанию , если не имеет значения. Вот так:
Для тех, кто не знаком с
f.object.field
вами, всегда используйте,f.object
затем добавьте имя вашего поля в конце этого.источник
select2
плагином JS. Прекрасно работает, если вы создаете или редактируете записи с той же формой и используете select2, особенно с заполнителем текста.Попробуй это:
источник
params[:pid]
не сработало, но ваш пример сработал.если params [: pid] - это строка, которая, если она пришла из формы, вероятно, вам понадобится
для правильного пункта, который будет выбран в списке выбора
источник
@project
переменную идентификатором из таблицы базы данных, а не заголовком, этот код работал с добавлением на заднюю частьform.select
помощника:selected: @project
Спасибо, @danengleЯ нашел решение, и я обнаружил, что я довольно неопытный в RoR.
Внутри контроллера, который управляет представлением, описанным выше, добавьте это:
источник
источник
Я не смог заставить это работать и обнаружил, что мне нужно добавить атрибут «selected» html не только в правильный
<option>
тег, но и в<select>
тег. Документы MDN по выбранному атрибуту тега select говорят:Это означает, что код должен выглядеть так:
источник
источник
В качестве альтернативы, вы можете установить атрибут: project_id в контроллере, так как первый аргумент f.select извлекает этот конкретный атрибут.
источник
Если попытаться напечатать объект f, то вы увидите, что существует объект f.object, который можно проверить для получения выбранного элемента (применимо для всех версий rails> 2.3)
поэтому используйте следующий скрипт, чтобы получить правильно выбранную опцию:
источник
Его уже объяснили, попробую привести пример
пусть список выбора будет
Таким образом, следующий код приводит к
Поэтому, чтобы сделать опцию выбранной по умолчанию, мы должны использовать selected: значение .
если can_vote? возвращает true, он устанавливает selected: 1, тогда первое значение будет выбрано, иначе second.
если параметры выбора - это просто список массива, а не hast, то выбранным будет только значение, которое будет выбрано, например, если
Теперь выбранный просто возьмет
источник
Ответ Майка Бетани, приведенный выше, работал, чтобы установить значение по умолчанию, когда создавалась новая запись, и все еще иметь значение, выбранное пользователем, отображаемое в форме редактирования. Однако я добавил проверку модели, и она не позволила мне отправить форму. Вот что помогло мне проверить модель на поле и показать значение по умолчанию, а также значение, выбранное пользователем в режиме редактирования.
проверка модели
источник
Это должно работать для вас. Он просто переходит
{:value => params[:pid] }
в переменную html_options.источник