2009-12-14 15 views
60

ho questa riga di codice:parametro passaggio da link_to Ruby on Rails

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

quando im nel metodo add_to_cart ... Come posso chiamare il: macchina per favore?

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

Questo non funziona perché dice che sto cercando di renderlo più stringente.

Non capisco cosa c'è che non va; perché l'ho usato per creare nuovi utenti e ha funzionato bene.

A proposito, l'auto è il mio oggetto auto.

risposta

127

Prova:

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

e poi nel controllore

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

che, troveranno nel tuo tavolo 'macchine' (come con r pluralizzazione) nel tuo DB una macchina con id == a car.id

spero che aiuti! felice di codifica più

di un anno dopo, ma se si vede o chiunque fa, ho potuto utilizzare i punti; D

+0

Ma cosa succede se il parametro dipende, diciamo, dal valore di un input, che può essere di natura dinamica? – Sebastialonso

2

Probabilmente non si vuole passare l'oggetto car come parametro, prova solo a passare car.id. Cosa ottieni quando fai inspect(params) dopo aver fatto clic su "Aggiungi al carrello"?

+0

il problema con questo è che non ho queste auto salvati da nessuna parte visto che sono raschiando l'informazione dal web e non li sto memorizzando da nessuna parte ... l'id è inesistente e a parte questo sarebbe inutile:/ – Lilz

+0

Ancora una volta, cosa ottieni quando controlli (params)? – bensie

+1

params [: product] .inspect è tornato vuoto "" – Lilz

6

magari provare questo:

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

ma mi piacerebbe davvero vedere dove l'oggetto macchina sta ottenendo setup per questa pagina (vale a dire, il resto della vista).

69

È possibile che questo non ha funzionato per me, ma questo fatto

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