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 %>