Übergeben Sie den Parameter von link_to ruby ​​auf Schienen


70

Ich habe diese Codezeile:

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

Wenn ich in der Methode add_to_cart bin ... wie kann ich das Auto bitte aufrufen?

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

Das funktioniert nicht, weil es besagt, dass ich versuche, es zu stringifizieren.

Ich verstehe nicht, was los ist; weil ich dies verwendet habe, um neue Benutzer zu erstellen, und es hat gut funktioniert.

Auto ist übrigens mein Autoobjekt.

Antworten:


141

Versuchen:

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

und dann in Ihrem Controller

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

welches, finden Sie in Ihrer 'Autos'-Tabelle (wie bei der Schienenpluralisierung) in Ihrer DB ein Auto mit der ID == to car.id.

ich hoffe es hilft! fröhliche Codierung

mehr als ein Jahr später, aber wenn Sie es sehen oder jemand tut, könnte ich die Punkte verwenden; D.


1
Was aber, wenn der Parameter beispielsweise vom Wert einer Eingabe abhängt, die dynamischer Natur sein kann?
Sebastialonso

80

Das obige hat bei mir nicht funktioniert, aber das hat funktioniert

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


6

Vielleicht versuchen Sie Folgendes:

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

Aber ich würde wirklich gerne sehen, wo das Autoobjekt für diese Seite eingerichtet wird (dh den Rest der Ansicht).


2

Sie möchten das carObjekt wahrscheinlich nicht als Parameter übergeben, sondern nur übergeben car.id. Was bekommen Sie, wenn Sie inspect(params)auf "In den Warenkorb" klicken?


Das Problem dabei ist, dass ich diese Autos nirgendwo gespeichert habe, da ich die Informationen aus dem Internet kratze und sie nirgendwo speichere. Daher ist die ID noch nicht vorhanden und ansonsten wäre sie nutzlos: /
Lilz

Was bekommen Sie noch einmal, wenn Sie inspizieren (params)?
Bensie

1
params [: product] .inspect kam leer zurück ""
Lilz

Wenn Sie keine 'ID' haben, was erwarten Sie als Parameter?
Dmytrii Nagirniak
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.