web-dev-qa-db-fra.com

passer le paramètre par link_to Ruby sur rails

J'ai cette ligne de code:

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

quand je suis dans la méthode add_to_cart ... comment puis-je appeler le: car s'il vous plaît?

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

Cela ne fonctionne pas car il est dit que j'essaie de le renforcer.

Je ne comprends pas ce qui ne va pas parce que je l'ai utilisé pour créer de nouveaux utilisateurs et cela a bien fonctionné.

À propos, la voiture est mon objet de voiture.

68
Lilz

Essayer:

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

puis dans votre contrôleur

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

qui trouveront dans votre table 'cars' (comme avec Rails pluralization) dans votre DB une voiture avec id == à car.id

j'espère que ça aide! codage heureux

plus d'un an plus tard, mais si vous le voyez ou si quelqu'un le voit, je pourrais utiliser les points; D

138
juanm55

Ce qui précède n'a pas fonctionné pour moi mais this

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

80
Jonathan Leung

Peut-être essayez ceci:

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

Mais j'aimerais vraiment voir où l'objet voiture est en train d'être configuré pour cette page (c'est-à-dire le reste de la vue).

6
MattMcKnight

Vous ne voulez probablement pas passer l'objet car en tant que paramètre, essayez simplement de passer car.id. Qu'est-ce que vous obtenez lorsque vous inspect(params) après avoir cliqué sur "Ajouter au panier"?

2
bensie