2010-11-19 8 views
0

Ich habe eine Methode in einem vorhandenen Rails-Controller (reports_controller) hinzugefügt, um eine bestimmte Aktion, die über den grundlegenden Umfang von REST hinausgeht, zu behandeln. Lassen Sie uns diese Aktion ‚Detail‘ nennen:link_to nicht Objekt ID in Rails 2.3.8

def detail 

@report = Report.find(params[:id]) 

respond_to do |format| 
    format.html # show.html.erb 
    format.xml { render :xml => @report } 
end 

Ende

Ich habe die entsprechende Layoutseite (detail.html.erb) und Routing, um sicherzustellen, dass ich von überall auf die Seite zugreifen können. Dies ist, wie meine Route wie folgt aussieht:

map.connect "reports/:action", :controller => 'reports', :action => /[a-z]+/i 

Gerade jetzt eine der Detailseiten zugreifen Ich bin in der Lage. Ein Beispiel Seite würde wie folgt aussehen: http://127.0.0.1:3000/reports/detail/8

Nun, ich versuche, eine Verbindung von der Hauptbericht Indexseite zu den Detailseiten zu erstellen, aber wenn Sie den Code unten verwenden:

<%= link_to "Details", {:controller => "reports", :action => "detail", :id => @report }, {:title => "see details for this report"} %> 

Der Link dass erstellt nicht die ID des Berichts sind auf es eine sieht wie folgt aus:

http://127.0.0.1:3000/reports/detail 

Jede Idee, was falsch ist mit dem, was ich tue?

Danke!

Antwort

1

Ich glaube, Sie könnten für :member suchen:

map.resources :reports, :member => { :detail => :get } 

link_to Verwendung:

link_to "Detail", detail_report_path(@report) 
+0

Hat auch nicht funktioniert. Ich habe die URL manuell erstellt, das ist die einzige Sache, die an diesem Punkt funktioniert ... – wotaskd

+0

der 'link_to' würde anders sein. Ich werde meine Antwort bearbeiten. –

+0

ah, danke dafür! Jetzt scheint der Fehler anders zu sein und scheint sich auf meine Route zu beziehen. Ich habe nur die Zeile zu meiner ursprünglichen Frage sowie Ihren Vorschlag (: Mitglied) angegeben. Dies ist der Fehler:

detail_report_url failed to generate from {:action=>"detail", :controller=>"reports"} - you may have ambiguous routes, or you may need to supply additional parameters for this route. content_url has the following required parameters: ["reports", :id, "detail"] - are they all satisfied?
wotaskd

0

Syntaxfehler, vielleicht? kein Komma Versuchen direkt nach @Report

+0

hallo, dass ein Tippfehler war, während die Frage eingeben. auch ohne es passiert das gleiche Problem – wotaskd