Rails隐藏字段未定义方法'合并'错误

Jak*_*ake 151 ruby forms ruby-on-rails hidden-field ruby-on-rails-3

我想在铁轨上做这样的事情

以下是我目前在rails中的内容:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service, "test" %>
  <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但后来我得到了这个错误:

undefined method `merge' for "test":String
Run Code Online (Sandbox Code Playgroud)

如何在rails中的hidden_​​field中传递值?

apn*_*ing 415

你应该做:

<%= f.hidden_field :service, :value => "test" %>
Run Code Online (Sandbox Code Playgroud)

hidden_field 期望哈希作为第二个参数

  • 它有点不一致,因为我们还写了`<%= hidden_​​field_tag:service,'test"%>`当不使用`form_for | f |`时...... (8认同)

use*_*447 55

您正在使用hidden_​​field而不是hidden_​​field_tag.因为您使用的是非_tag版本,所以假设您的控制器已经在支持表单的对象上设置了该属性的值.例如:

控制器:

def new
  ...
  @order.service = "test"
  ...
end</pre>
Run Code Online (Sandbox Code Playgroud)

视图:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service %>
  <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)


Tus*_*CSD 27

它在Ruby 1.9和rails 4中运行良好

<%= f.hidden_field :service, value: "test" %>
Run Code Online (Sandbox Code Playgroud)