2011-07-09 20 views
146

lo que quiero hacer algo como esto en los carriles rieles campo oculto método no definido 'fusionar' error

Esto es lo que tengo hasta ahora en rieles:

<%= form_for @order do |f| %> 
    <%= f.hidden_field :service, "test" %> 
    <%= f.submit %> 
<% end %> 

Pero entonces me sale este error:

undefined method `merge' for "test":String 

¿Cómo puedo pasar valores en mi hidden_field en los carriles?

+63

¿Usted aceptaría una respuesta? – apneadiving

+5

@Jake ¿dónde has estado? Te extrañamos. Por favor regrese. – mraaroncruz

+2

Se ha ido maaaaaaan. – snowYetis

Respuesta

402

que debe hacer:

<%= f.hidden_field :service, :value => "test" %> 

hidden_field espera un hash como segundo argumento

+1

@rodrigovieira: De nada :) – apneadiving

+0

Tan simple gracias al mismo tiempo tan complejo! – wallerjake

+8

Es una especie de inconsistente como también escribimos '<% = hidden_field_tag: el servicio, "prueba" %>' 'cuando no se utiliza form_for | f |' ... –

53

Está utilizando un hidden_field en lugar de un 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> 

vista:

<%= form_for @order do |f| %> 
    <%= f.hidden_field :service %> 
    <%= f.submit %> 
<% end %> 
+4

1 para una respuesta valiosa – apneadiving

3

Una versión con la nueva sintaxis para hashes en rubí 1,9:

<%= f.hidden_field :service, value: "test" %> 
2

Esto también funciona en Rails 3.2 0,12:

<%= f.hidden_field :service, :value => "test" %>

0

Por cierto, no hace uso de campos ocultos para enviar datos desde el servidor al navegador. Data attributes son increíbles. Usted puede hacer

<%= form_for @order, 'data-service' => 'test' do |f| %> 

Y a continuación, obtener el valor de atributo con jQuery

$('form').data('service') 
26

Funciona bien en Ruby 1.9 & carriles 4

<%= f.hidden_field :service, value: "test" %> 
Cuestiones relacionadas