我想在铁轨上做这样的事情
以下是我目前在rails中的内容:
<%= form_for @order do |f| %>
<%= f.hidden_field :service, "test" %>
<%= f.submit %>
<% end %>
但后来我收到了这个错误:
undefined method `merge' for "test":String
如何在rails中的hidden_field中传递值?
答案 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')