Eu quero fazer algo assim nos trilhos
Aqui está o que eu tenho até agora nos trilhos:
<%= form_for @order do |f| %>
<%= f.hidden_field :service, "test" %>
<%= f.submit %>
<% end %>
Mas então eu recebo este erro:
undefined method `merge' for "test":String
Como posso passar valores no meu hidden_field no Rails?
Respostas:
Você deveria fazer:
hidden_field
espera um hash como um segundo argumentofonte
<%= hidden_field_tag :service, "test" %>
quando não estiver usandoform_for |f|
...Você está usando um hidden_field em vez de um hidden_field_tag. Como você está usando a versão não _tag, presume-se que seu controlador já tenha definido o valor desse atributo no objeto que faz o backup do formulário. Por exemplo:
controlador:
Visão:
fonte
Funciona bem em Ruby 1.9 e rails 4
fonte
Uma versão com a nova sintaxe para hashes no ruby 1.9:
fonte
Isso também funciona no Rails 3.2.12:
<%= f.hidden_field :service, :value => "test" %>
fonte
A propósito, eu não uso campos ocultos para enviar dados do servidor para o navegador. Os atributos de dados são impressionantes. Você pode fazer
E, em seguida, obtenha o valor do atributo com jquery
fonte