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

时间:2011-07-09 19:08:34

标签: ruby-on-rails ruby ruby-on-rails-3 forms hidden-field

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

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

<%= form_for @order do |f| %>
  <%= f.hidden_field :service, "test" %>
  <%= f.submit %>
<% end %>

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

undefined method `merge' for "test":String

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

6 个答案:

答案 0 :(得分:411)

你应该这样做:

<%= f.hidden_field :service, :value => "test" %>

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

答案 1 :(得分:55)

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

控制器:

def new
  ...
  @order.service = "test"
  ...
end</pre>

视图:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service %>
  <%= f.submit %>
<% end %>

答案 2 :(得分:27)

它在Ruby 1.9&amp; rails 4

<%= f.hidden_field :service, value: "test" %>

答案 3 :(得分:3)

在ruby 1.9中使用新哈希语法的版本:

<%= f.hidden_field :service, value: "test" %>

答案 4 :(得分:2)

这也适用于Rails 3.2.12:

<%= f.hidden_field :service, :value => "test" %>

答案 5 :(得分:0)

顺便说一句,我不使用隐藏字段将数据从服务器发送到浏览器。 Data attributes很棒。你可以做到

<%= form_for @order, 'data-service' => 'test' do |f| %>

然后使用jquery

获取属性值
$('form').data('service')