Rails Simpleform с немодельными входами
У меня нормальная форма с использованием simpleform. Теперь я хотел бы добавить вход, который не имеет соответствующего поля в модели, он будет обработан контроллером. Я попробовал
<%= simple_form_for @obj do |f| %>
<%= f.input :name %>
<%= f.input :attr, as: :string %> <-- should just send "attr" as post data
<% end %>
но это дает ошибку Method not found: attr_not_in_obj
. Я мог бы, очевидно, использовать стандартные помощники рельсов, но тогда я пропущу все простые формы HTML вокруг ввода, и копирование не совсем корректно.
Вкратце:
Я ищу что-то вроде simpleform версии помощников тегов rails, без какого-либо подключения к модели. Как добавить входы, которые не соответствуют атрибутам модели?
Ответы
Ответ 1
Почему бы вам не добавить:
attr_accessor :attr
для определения вашего модельного класса? Таким образом, ваш код:
<%= f.input :attr %>
должен работать.
ИЛИ
Если это решение не подходит, вы всегда можете передать некоторое значение вашему методу input
напрямую:
<%= f.input :attr, input_html: {value: 'something'} %>
Ответ 2
Скажите, что вы хотите использовать хелперную форму для рельсов, но все равно оберните ее в SimpleForm? Вы можете, вызвав вход с блоком следующим образом:
<%= simple_form_for @obj do |f| %>
<%= f.input :name %>
<%= f.input :attr do %>
<%= text_field_tag 'attr' %>
<% end %>
<% end %>