pasar parámetro por enlace a ruby on rails


Tengo esta línea de código:

<%= link_to "Add to cart", :controller => "car", :action => "add_to_cart", :car => car %>

Cuando estoy en el método add_to_cart...¿cómo puedo llamar al :coche, por favor?

@car = Car.new(params[:car])

Que no funciona porque dice que estoy tratando de stringify ella.

No entiendo qué está mal; porque usé esto para crear nuevos usuarios y funcionó bien.

Por cierto, el coche es mi objeto de coche.

Author: Arslan Ali, 2009-12-14

4 answers

Intenta:

<%= link_to "Add to cart", {:controller => "car", :action => "add_to_cart", :car => car.id }%>

Y luego en su controlador

@car = Car.find(params[:car])

Que, encontrará en su tabla 'cars' (como con la pluralización de rails) en su DB un coche con id = = to car.id

Espero que ayude! feliz codificación

Más de un año después, pero si lo ves o alguien lo hace, podría usar los puntos ;D

 134
Author: juanm55,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-22 16:56:26

Lo anterior no funcionó para mí, pero esto lo hizo

<%= link_to "text_to_show_in_url", action_controller_path(:gender => "male", :param2=> "something_else") %>

 75
Author: Jonathan Leung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-19 17:41:58

Tal vez intente esto:

<%= link_to "Add to cart", 
            :controller => "car", 
            :action => "add_to_cart", 
            :car => car.attributes %>

Pero realmente me gustaría ver dónde se está configurando el objeto car para esta página (es decir, el resto de la vista).

 6
Author: MattMcKnight,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-14 04:06:31

Probablemente no desee pasar el objeto car como parámetro, intente simplemente pasar car.id. ¿Qué obtienes cuando inspect(params) después de hacer clic en "Agregar al carrito"?

 2
Author: bensie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-14 03:27:56