179

你怎么能有一个简单形式的隐藏字段?

以下代码:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

导致此错误:

undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0
4

4 回答 4

318

试试这个

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
于 2011-03-20T21:07:04.700 回答
287

最短的!

=f.hidden_field :title, :value => "some value"

更短,更干燥,也许更明显。

当然,使用 ruby​​ 1.9 和新的哈希格式,我们可以缩短 3 个字符......

=f.hidden_field :title, value: "some value"
于 2011-09-05T00:30:04.010 回答
6

正确的方法(如果您不尝试重置 hidden_​​field 输入的值)是:

f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form

:method 在对象上调用时产生所需值的方法在哪里

所以按照上面的例子:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

示例中使用的代码将重置表单传递的@movie 的值(:title)。如果您需要访问电影的值 (:title),而不是重置它,请执行以下操作:

= simple_form_for @movie do |f|
  = f.hidden :title, :value => params[:movie][:title]
  = f.button :submit

再次仅使用我的答案是您不想重置用户提交的值。

我希望这是有道理的。

于 2014-08-04T14:15:13.497 回答
5
= f.input_field :title, as: :hidden, value: "some value"

也是一种选择。但是请注意,它会跳过为您的表单构建器定义的任何包装器。

于 2014-01-07T21:49:50.457 回答