我想在铁轨上做这样的事
以下是我目前在铁路方面的发现:
<%= form_for @order do |f| %> <%= f.hidden_field :service, "test" %> <%= f.submit %> <% end %>
但是我得到了这个错误:
undefined method `merge' for "test":String
我如何在 Rail 中传递我的 hide _ field 中的值?
你应该这样做:
<%= f.hidden_field :service, :value => "test" %>
hidden_field期望哈希作为第二个参数
hidden_field
您使用的是 hide _ field 而不是 hide _ field _ tag。因为您使用的是非 _ tag 版本,所以假定您的控制器已经在支持表单的对象上设置了该属性的值。例如:
控制器:
def new ... @order.service = "test" ... end</pre>
观点:
<%= form_for @order do |f| %> <%= f.hidden_field :service %> <%= f.submit %> <% end %>
Ruby 1.9中新的散列语法版本:
<%= f.hidden_field :service, value: "test" %>
这也适用于 Rails 3.2.12:
顺便说一下,我不使用隐藏字段从服务器发送数据到浏览器。数据属性太棒了。你可以的
<%= form_for @order, 'data-service' => 'test' do |f| %>
然后使用 jquery 获取属性值
$('form').data('service')
它在 Ruby 1.9和 Rails4中运行良好