Якщо я правильно зрозумів вашу відповідь, про те, що ви хочете зробити, пояснюється на офіційній вікі-сторінці тут: Створіть підроблений ввід, який НЕ читає атрибути . Ви можете використовувати поле, не пов’язане з жодним реальним стовпцем бази даних за пропозицією Едварда, однак вам не потрібно визначати атрибут у вашій моделі, якщо поле форми не має нічого спільного з моделлю.
Підводячи підсумок, фокус, який пояснюється на цій сторінці, полягає у визначенні користувацького вводу під назвою „FakeInput“ і використання його таким чином:
<%= simple_form_for @user do |f| %>
<%= f.input :agreement, as: :fake %>
....
Не забудьте перезапустити ваш сервер rails після додавання / модифікації власного введення, як прокоментував Fitter Man.
ОНОВЛЕННЯ: Зверніть увагу, що офіційна сторінка wiki оновилася, а зразок коду на сторінці wiki не працює для тих, хто використовує старіші версії SimpleForm. Замість цього скористайтеся наведеним нижче кодом, якщо у вас виникне така помилка undefined method merge_wrapper_options for...
. Я використовую 3.0.1, і цей код працює добре.
class FakeInput < SimpleForm::Inputs::StringInput
def input
template.text_field_tag(attribute_name, input_options.delete(:value), input_html_options)
end
end