Railsでこのようなことをしたい
ここに私がこれまでRailsで持っていたものがあります:
<%= form_for @order do |f| %>
<%= f.hidden_field :service, "test" %>
<%= f.submit %>
<% end %>
しかし、私はこのエラーを受け取ります:
undefined method `merge' for "test":String
Railsのhidden_fieldに値を渡すにはどうすればよいですか?
やったほうがいい:
<%= f.hidden_field :service, :value => "test" %>
hidden_field
は、2番目の引数としてハッシュを想定しています
Hidden_field_tagの代わりにhidden_fieldを使用しています。 _tag以外のバージョンを使用しているため、コントローラーがフォームをサポートするオブジェクトのその属性の値を既に設定していると想定されます。例えば:
コントローラ:
def new
...
@order.service = "test"
...
end</pre>
見る:
<%= form_for @order do |f| %>
<%= f.hidden_field :service %>
<%= f.submit %>
<% end %>
Ruby 1.9およびRails 4で正常に動作します
<%= f.hidden_field :service, value: "test" %>
Ruby 1.9のハッシュの新しい構文を備えたバージョン:
<%= f.hidden_field :service, value: "test" %>
これはRails 3.2.12でも機能します:
<%= f.hidden_field :service, :value => "test" %>
ところで、サーバーからブラウザにデータを送信するために隠しフィールドを使用しません。 データ属性 は素晴らしい。できるよ
<%= form_for @order, 'data-service' => 'test' do |f| %>
そして、jqueryで属性値を取得します
$('form').data('service')