У меня есть часть, которая вставляет в мои формы соответствующий ввод в соответствии с типом атрибута модели. Я передаю массив имен атрибутов, и моя часть помещает поле form.text_field, где атрибут является строкой, а form.select, когда атрибут является целым числом (у меня также есть способ найти коллекцию текстовых значений, связанных с атрибутом) и так далее с датой и т. д.
Проблема в том, что частичное должно быть как можно более универсальным, поэтому я хочу проверить, есть ли у меня params [: search] [: attr_name] для установки значения по умолчанию, и если a его нет, я используйте вызов по умолчанию, который устанавливает значение модели в форме.
Конечно, я могу сделать что-то вроде этого (я использую HAML):
- if search_param(field)
= form.text_field field, :value => search_param(field)
- else
= form.text_field field
но это действительно ужасно. Существует любой способ передать опцию методу, только если условие истинно. Как то так.
= form.text_field field, (:value => search_param(field) ) if search_param(field)
Я пытался также сделать:
= form.text_field field, :value => search_param(field) || field.to_sym
но в поле ввода отображается "поле"
Идеи