ruby on rails - form_with - Rails hidden field undefined method ''merge'' error
hidden field rails (6)
Quiero hacer algo así en rieles
Esto es lo que tengo hasta ahora en los raíles:
<%= form_for @order do |f| %>
<%= f.hidden_field :service, "test" %>
<%= f.submit %>
<% end %>
Pero luego me sale este error:
undefined method `merge'' for "test":String
¿Cómo puedo pasar valores en mi hidden_field en rieles?
Deberías hacer:
<%= f.hidden_field :service, :value => "test" %>
hidden_field
espera un hash como segundo argumento
Está utilizando un hidden_field en lugar de hidden_field_tag. Como está utilizando la versión no _tag, se supone que su controlador ya ha establecido el valor para ese atributo en el objeto que respalda el formulario. Por ejemplo:
controlador:
def new
...
@order.service = "test"
...
end</pre>
ver:
<%= form_for @order do |f| %>
<%= f.hidden_field :service %>
<%= f.submit %>
<% end %>
Esto también funciona en Rails 3.2.12:
<%= f.hidden_field :service, :value => "test" %>
Funciona bien en Ruby 1.9 & rails 4
<%= f.hidden_field :service, value: "test" %>
Por cierto, no uso campos ocultos para enviar datos del servidor al navegador. Los atributos de datos son increíbles. Tu puedes hacer
<%= form_for @order, ''data-service'' => ''test'' do |f| %>
Y luego obtener el valor del atributo con jquery
$(''form'').data(''service'')
Una versión con la nueva sintaxis para hashes en ruby 1.9:
<%= f.hidden_field :service, value: "test" %>