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, без какого-либо подключения к модели. Как добавить входы, которые не соответствуют атрибутам модели?

2 ответа

Почему бы вам не добавить:

attr_accessor :attr

для определения вашего модельного класса? Таким образом, ваш код:

<%= f.input :attr %>

должен работать.

ИЛИ

Если это решение не подходит, вы всегда можете передать некоторое значение вашему методу input напрямую:

<%= f.input :attr, input_html: {value: 'something'} %>


Скажите, что вы хотите использовать хелперную форму для рельсов, но все равно оберните ее в SimpleForm? Вы можете, вызвав вход с блоком следующим образом:

<%= simple_form_for @obj do |f| %>
 <%= f.input :name %>
 <%= f.input :attr do %>
 <%= text_field_tag 'attr' %>
 <% end %>
<% end %>

licensed under cc by-sa 3.0 with attribution.