2011-01-12 20 views
1

Hallo habe ich einen Controller Artikel und fügte den folgenden Codekeine Ausgabe in benutzerdefinierten erstellten Ansichten

def chid 
    @message='hello world' 
    respond_to do |format| 
    format.html 
    end 

end 

Ich habe dann

chid.html.erb
Datei in
app/views/articles/

und schrieb den folgenden Code

 
Hello world 

Wenn i gab die folgende URL

../articles/chid
ich dunnot bekomme keine Ausgabe .. bin ich etwas fehlt?

Mein log Teil

 
Processing ArticlesController#show (for 127.0.0.1 at 2011-01-12 21:51:01) 
[GET] Session ID: BAh7BzoMY3NyZl9pZCIlMTA0ZWY2ZTUzYjQxZGJkZmFlMTQwNWRjYjczNTRm%0AODAiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhh%0Ac2h7AAY6CkB1c2VkewA%3D--de7737601817f52c1b72daca6061c5126f3a5022 
Parameters: {"action"=>"show", "id"=>"chid", "controller"=>"articles"} 
Rendering template within layouts/articles 
Rendering articles/show Completed in 0.01000 (100 reqs/sec) | Rendering: 0.00600 (60%) | DB: 0.00000 (0%) | 200 OK [localhost/articles/chid/]

meine router.rb Datei ist als

 

ActionController::Routing::Routes.draw do |map| 
    map.resources :articles 
map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
    map.match ':controller/:action/' => 'Article#chid' 
end 
+0

Haben Sie Ihre Routen eingerichtet? –

+0

@Matheus: Nein. Was soll ich dort tun? sorry am jus lernen ROR – CHID

+0

@Matheus: Die Seite wird korrekt gerendert .. Aber es gibt keine Ausgabe – CHID

Antwort

2

Im config Verzeichnis folgt eine Datei routes.rb benannt ist. Diese Datei teilt Rails mit, wie er auf bestimmte URLs reagieren soll, indem er ihnen die Aktion eines Controllers zuordnet.

Betrachten Sie das Beispiel:

match '/articles/chid' => 'Articles#chid' 

Dies wird Route #{your_site_url}/articles/chid-ArticlesController ‚s chid Aktion, die wiederum die chid.html.erb Ansicht in views/articles gelegen machen würde.

Wir können auch Rails sagen, was zu routen / als gut:

root :to => 'Articles#chid' 

Und wir schließlich konnten, Route auch jeder Controller auf jede Aktion mit, was Bound Parameter genannt:

match ':controller/:action' 

Als letzte Anmerkung, überprüfen Sie auf jeden Fall die Rails Guides on Routing.

aktualisieren:

Versuchen Sie folgendes routes.rb mit:

ActionController::Routing::Routes.draw do |map| 
    map.connect ':controller/:action' 
end 

bearbeiten

Basierend auf der routes.rb Datei diese Zeile, die Sie gerade gebucht, ist der Schuldige. Lösche es.

map.connect ':controller/:action/:id'

Beachten Sie, dass die Routen Spiel vom Anfang der Datei auf den Boden, um und sobald es eine Übereinstimmung findet, ist es geschafft. Es wird nicht auf den Rest Ihrer Routen aussehen.

+0

@Matheus. Ich habe die folgende Zeile in routes.rb map.match ': controller/articles/chid' => 'Artikel # chid' hinzugefügt. Immer noch zeigt es Datensatz nicht gefunden mit id = chid. – CHID

+0

Wenn ich den Controller nicht spezifiziere, gibt er mir einen Fehler. Ich verwende Rails 2.0.2 – CHID

+0

Haben Sie 'map.resources: articles' irgendwo in Ihrem' routes.rb'? Wenn ja, versuche vorher 'map.match '/ articles/chid' => 'Articles # chid'' hinzuzufügen, oder entferne es einfach altoogheter. (Übrigens, die Anweisungen, die ich gab, waren für Rails 3 ... aber sie sollten mit kleinen Änderungen funktionieren, denke ich) –

Verwandte Themen