Rails 4: дополнительное поле формы

Вот так выглядит моя новая / редактируемая форма сообщения (я использую slim):

= form_for(@message) do |f|
  = f.label :message
  br
  = f.text_area :content
  br
  = f.submit 'Submit'

Есть ли способ отправить дополнительное поле через форму (который не определен ни в одной модели?). Я хочу использовать его в методе создания внутри контроллера сообщений.

2 ответа

Решение

При использовании Rails 4 вы можете создать собственный аксессор в модели:

attr_accessor :content

и он не будет сохранен в базе данных.

В Rails 5 есть специальный макрос, который также может указывать атрибут для чтения.

В любом случае, убедитесь, что атрибут также находится в списке параметров из белого списка, если используете http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html

Вы можете создавать и отправлять произвольные поля, используя hidden_field метод:

= f.hidden_field(:name)

Это предполагает, что у вас есть поле модели. Если не вы используете hidden_field_tag:

= hidden_field_tag(:name, 'value')
Другие вопросы по тегам