2012-05-02 13 views
14

Ich habe ein Modell "Artikel" und ein Modell "Bewertungen" in Artikeln geschachtelt.Schienen ändern Routing von Senden in form_for

/articles/123/Bewertungen

Ich möchte das Routing des f.submit in Ratings ändern/_form.html.erb jetzt ist es so, dass nach dem Drücken vorlegen, meine Bewerbung router zu

/Bewertungen/111

aber ich möchte es Weg zu

/article/123

Wie kann ich den Router ändern in einer form_for fmit-Taste. Ich habe hier so etwas wie diese gefunden:

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

Aber für meine Schienen 3.2 nicht funktionieren. Vielen Dank für Ihre Hilfe.

+0

Sie haben vergessen, '=' nach '<%' hinzuzufügen. Leider habe ich nicht verstanden, bei welchem ​​Controller und welcher Aktion das Formular gesendet werden soll. –

Antwort

19

: url - Die URL, an die das Formular gesendet wird. Es dauert dieselben Felder, die Sie an url_for oder link_to übergeben. Insbesondere können Sie auch direkt eine benannte Route passieren. Standardeinstellung für die aktuelle Aktion

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

Sie können auch den path_name übergeben, indem Sie den Helfer verwenden. so können Sie auch etwas wie

:url => update_article_path(@article) 
+0

Nein, das funktioniert nicht für mich >> form_for (@rating),: url => (: action => "show",: id => @article) do | f | >> der Fehler, den ich bekomme, ist dieser >> Syntaxfehler, unerwarteter TASSOC, erwarte keyword_end ... nd = – Lailo

+0

Ich habe den Antwort-Check jetzt bearbeitet – Abid

3

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