Rails4:附加表单域

Rails 4: Additional form field

这就是我的 new/edit 消息表单的样子(我正在使用 slim):

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

有没有办法通过表单发送额外的字段(哪个没有在任何模型中定义?)。我想在消息控制器中的 'create' 方法中使用它。

您可以使用 hidden_field 方法创建和提交任意字段:

= f.hidden_field(:name)

这假设您有一个模型字段。如果不是你使用 hidden_field_tag:

= hidden_field_tag(:name, 'value')

如果使用 Rails 4,您可以在模型中创建自定义访问器:

attr_accessor :content

并且不会保存到数据库中。

在 Rails5 中有一个特定的宏,它也可以对属性进行类型转换以供读取。

无论如何,如果使用 http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html

,请确保该属性也在白名单参数列表中