2008-10-21 8 views
5

Ich habe eine wirklich einfache Schienen Frage hier, aber ich kann nicht scheinen, die Antwort irgendwo zu finden. Ich denke, einige der Probleme stammen von mir nach einem Tutorial für Rails 1.2 mit Rails 2.1. Wie auch immer ..Schienen ignorieren Render und redirect_to

Ich schreibe ein Blog-System und ich bin die Umsetzung der Kommentare Bit. Ich habe Kommentare, die gut angezeigt werden, sobald ich sie mit dem Skript/der Konsole erstellt habe, aber das Kommentarformular selbst funktioniert, ist das harte Bit.

In posts_controller.rb Ich habe

def comment 
    Post.find(params[:id]).comments.create(params[:comment]) 
    flash[:notice] = "Added comment" 
    #render :action => show 
    redirect_to :action => show 
    end 

und in show.html.erb (die Ansicht) Ich habe

<%= form_tag :action => "comment", :id => @post %> 
    <%= text_area "comment", "body" %><br> 
    <%= submit_tag "Post Comment" %> 

Als ich senden Sie das Formular an die urb zu gehen versucht/posts/comment/1 was offensichtlich falsch ist, und es beschwert sich, dass es keine Vorlage finden kann. Offensichtlich möchte ich dort keine Vorlage, weil ich es angewiesen habe, auf die Show-Aktion umzuleiten, weil ich möchte, dass die Show-Seite des Posts einfach mit dem neuen Kommentar dort angezeigt wird.

Ich habe sowohl die auskommentierte Zeile (render: action => show) als auch die redirect_to-Zeile ausprobiert, und beide scheinen gar nichts zu tun.

Ich bin sicher, ich vermisse etwas Einfaches, aber was ist das?

Antwort

8

Funktioniert redirect_to :action => 'show', :id => params[:id] mit Zitaten um Arbeit zu zeigen?

-1

ja, Sie verwenden alte Schienen Stil.

Etwas Neues:

gem install -v 1.2.6 rails 
0

Rails 2.1 umfasst "RESTful Ressourcen":

form_for :comment, :url => { :post_id => @post } do |f| 
    f.text_area :body 
    submit_tag "Post" 
    end 

Sie Ressourcen für die Beiträge und Kommentare, Google-Suche für bessere Tutorial oder installieren Schienen 1.2.6 verwenden können. show ist zufällig der Name einer der vordefinierten REST-Aktionen, die alle Rails-Controller verwenden.

Rails zaubert etwas hinter die Kulissen, und: show ist gleichbedeutend mit "zeige dieses spezifische Element mit einer bestimmten ID an". Klingt so, als würde es damit verwechselt. Die ID ist wahrscheinlich auf "1" voreingestellt. Daraus ergibt sich die erzeugte URL Sie aus dem machen sind zu sehen nennen

Die Rails 2.1 Art und Weise, es zu tun, die folgenden Aktionen und Vorlagen verwenden würden:

  • index - zeigt die vollständige Liste der Kommentare
  • create - füge einen neuen Kommentar hinzu
  • show - Zeige nur einen bestimmten Kommentar (nicht die vollständige Liste). Klingt nicht so, als ob das das ist, was du willst, aber die "Magie" in den Schienen wird standardmäßig darauf eingestellt.

Es gibt auch Aktionen für new (Show Ansicht einen neuen Kommentar eingeben) edit (show Ansicht bearbeitet eines vorhandenen Kommentar zu tun) update (Handle Update Vorlage) und destroy (duh), aber es doesn‘ Es sieht so aus, als würden Sie sie in diesem Beispiel verwenden.

Haben Sie einen Link zum Tutorial? Wäre nicht zu schwer, es nach Rails 2.1 zu portieren.

+0

Das Tutorial ist unter http://www.sapphiresteel.com/How-To-Create-A-Ruby-On-Rails-Blog.168. Ich habe auch eine andere Frage zu dieser Art von Problem http://stackoverflow.com/questions/224669/correct-rails-21-way-of-doing-things gepostet – robintw

Verwandte Themen