Как выбрать значение по умолчанию для набора переключателей в Formtastic?

Я создаю форму в Rails3 и Formtastic. У меня есть следующее поле:

<%= f.input :housing, :as => :radio, :collection => {"Awesome" => "one", "Great" => "two", "Nice" => "three"} %>

Что генерирует HTML, похожий на:

<input id="post_one" name="post" type="radio" value="one" />Awesome</label>
<input id="post_two" name="post" type="radio" value="two" />Great</label>
<input id="post_three" name="post" type="radio" value="three" /> Nice</label>

Это работает безупречно!

Теперь я хотел бы знать, как я могу передать опцию, которая пометила бы «Отлично» как значение по умолчанию (выбранное). Я пробовал сделать следующее, но не могу заставить его работать.

<%= f.input :housing, :as => :radio, :collection => {"Awesome" => "one", "Great" => "two", "Nice" => "three"}, :default => "one" %>

Я также пробовал передавать :selected и :checked вместо :default, но, увы, это не работает.

Кто-нибудь знает, как это сделать?

Спасибо!


Изменить: Адитья поднимает очень хороший вопрос. Некоторый поиск дал этот полезный совет.


person Yuval Karmi    schedule 27.12.2010    source источник


Ответы (3)


Вы пробовали установить для атрибута :ousing вашей модели значение по умолчанию? Вы можете сделать это непосредственно перед запуском формы или в контроллере, или лучше всего сделать это в инициализации модели? Просмотр может быть не лучшим местом по умолчанию ИМХО.

person Aditya Sanghi    schedule 27.12.2010
comment
Спасибо! хотя это на самом деле не отвечает на исходный вопрос, вы поднимаете очень хороший вопрос. См. Ссылку, прикрепленную к моему вопросу. - person Yuval Karmi; 27.12.2010
comment
Я также имел в виду, что опция selected / default недоступна в formtastic. Предлагаемый путь - установить значение по умолчанию в самой модели. Вот ссылка на обсуждение его существования, истории и удаления. github.com/justinfrench/formtastic/wiki/ - person Aditya Sanghi; 27.12.2010
comment
Но как это сделать, когда нет модели, связанной с формой? - person barbacan; 22.08.2011

Задайте параметры HTML для конкретной опции ввода радио с 3-м элементом в массиве для члена коллекции следующим образом:

<%= f.input :author, :as => :radio, :collection => [["Test", 'test'], ["Try", "try", {:checked => true}]]
person Ivan    schedule 30.11.2011
comment
это делает элемент отключенным, то есть его нельзя выбрать вообще - person kitwalker; 02.10.2013
comment
@kitwalker Просто замените {: disabled = ›true} на {: checked =› true}, и все готово. - person Hoa; 15.05.2014
comment
@Hoa прав, он должен сказать, что проверено, а не отключено. Я отправил правку для этого, ее просто нужно одобрить - person dkniffin; 25.06.2021

Больше нет возможности сделать это в представлении, правильный способ - инициализировать модель с правильным значением по умолчанию или перевести модель в это состояние в контроллере, как описано Адитьей.

person Justin French    schedule 27.12.2010
comment
Вы посмотрели и ответили! Большое спасибо :) - person Yuval Karmi; 27.12.2010
comment
Но как это сделать, когда нет модели, связанной с формой? как также спросил @barbacan. - person Mirko; 07.09.2011
comment
Если модели нет, вам не следует использовать form_for или semantic_form_for в этом случае. Во всем есть компромиссы. Я бы попытался создать модель. Например, SearchLogic имеет модель поиска, подобную ActiveModel. Это вполне выполнимо и не так много работы, как вы думаете, а положительный момент выходит далеко за рамки этой проблемы - вы можете проводить проверки и т. Д. - person Justin French; 08.09.2011
comment
Мы используем Rails Engine для обеспечения логики модели / контроллера, а наши различные приложения - это просто шаблоны просмотра с установленным движком ... Изменение модели / контроллера на самом деле не вариант для нас, поскольку разные приложения могут иметь разные значения по умолчанию . Я думаю, это означает, что наш единственный вариант - установить его через jquery или что-то в этом роде? - person daybreaker; 10.11.2011
comment
Другие варианты: не использовать Formtastic для этой формы или для этой части формы :) - person Justin French; 17.01.2012