2012-05-02 3 views
14

Ho un modello "Articolo" e un modello "Valutazioni" annidato all'interno degli articoli.I binari cambiano il routing di invio in form_for

/articoli/123/feedback

voglio cambiare l'instradamento del f.submit nei rating/_form.html.erb ora è così, che dopo aver premuto invio, le mie rotte applicazioni per

/valutazioni/111

ma voglio instradamento fino

/article/123

Come posso cambiare la rotta in un form per il pulsante f.submit. ho trovato qui qualcosa di simile:

<% form_for :thing, :url => 
url_for(:action => "update", :id => @thing) do |f| %> 

Ma questo non lavoro per i miei rotaie 3.2. Grazie per il tuo aiuto,

+0

Hai dimenticato di aggiungere '=' dopo '<%'. Purtroppo non ho capito a quale controller e azione si desidera inviare il modulo. –

risposta

19

: url: l'URL al quale il modulo è stato inviato. Prende gli stessi campi che passi a url_for o link_to. In particolare, puoi passare anche qui una rotta denominata. Predefinito all'azione corrente.

<% form_for :thing, :url => {:action => "update", :id => @thing} do |f| %> 

si può anche passarlo il path_name utilizzando l'helper. quindi puoi anche fare qualcosa come

:url => update_article_path(@article) 
+0

no questo non funziona per me >> form_for (@rating),: url => (: action => "show",: id => @article) do | f | >> l'errore che ottengo sono questo >> Errore di sintassi, TASSOC inaspettato, in attesa di keyword_end ... nd = – Lailo

+0

Ho modificato la risposta controlla ora – Abid

3

Prova form_for (:thing, url:{:controller=>'thing', :action=>'update'}, html:{method:'put'}).