rails simple_form - 隐藏字段 - 创建?

Lin*_*der 171 ruby-on-rails hidden-field form-for ruby-on-rails-3 simple-form

你怎么能有一个简单形式的隐藏领域?

以下代码:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit
Run Code Online (Sandbox Code Playgroud)

导致此错误:

undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0
Run Code Online (Sandbox Code Playgroud)

fl0*_*00r 302

试试这个

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这很有效.`= f.input:title,:as =>:hidden,:input_html => {:value =>"some value"}` (8认同)
  • 这是执行隐藏输入的`simple_form`方式,但是,如果只需要隐藏的输入,那么只需使用Rails的`hidden_​​field`表单构建器,因为Simple Form继承了所有表单构建器方法. (5认同)

Mic*_*ant 276

最短的!!!

=f.hidden_field :title, :value => "some value"
Run Code Online (Sandbox Code Playgroud)

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

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

=f.hidden_field :title, value: "some value"
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案.即使问题是关于简单形式的问题,但是当使用较短的语法完成完全相同的事情时,没有理由使用它. (2认同)

Fua*_*aud 5

= f.input_field :title, as: :hidden, value: "some value"
Run Code Online (Sandbox Code Playgroud)

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


Uzz*_*zar 5

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

f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form
Run Code Online (Sandbox Code Playgroud)

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

所以按照上面的例子:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit
Run Code Online (Sandbox Code Playgroud)

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

= simple_form_for @movie do |f|
  = f.hidden :title, :value => params[:movie][:title]
  = f.button :submit
Run Code Online (Sandbox Code Playgroud)

再次只使用我的答案是你不想重置用户提交的值.

我希望这是有道理的.

  • 对于`simple_form_for`,这里使用的`hidden` 方法将引发错误`undefined method `hidden' for #<SimpleForm::FormBuilder:0x00007ffa6cde0be8>` (2认同)