Routing Error — No route matches [POST] "/posts/new"
Arbeite ich durch die rubyonrails.org 'blog-tutorial', und bekomme diese Fehlermeldung, wenn ich versuche zu senden, einen 'post' : Routing-Fehler --No route matches [POST] "/posts/neue"
Ich kopiert und eingefügt, den code aus dem tutorial in meinem code. Diese sollen den Wiedereinstieg ein hash mit dem text und dem Titel der post, aber stattdessen bekomme ich die obige Fehlermeldung.
Hier ist meine Ansicht:
<%= form_for :post, url: posts_path do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :text %><br>
<%= f.text_area :text %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
Hier ist mein controller:
class PostsController < ApplicationController
def new
end
def create
render text: params[:post].inspect
end
end
Hier meine Routen.rb:
Blog::Application.routes.draw do
resources :posts
end
rake-Routen gibt:
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post GET /posts/:id(.:format) posts#show
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy
Hier ist, was die rails s Fenster generiert:
Started POST "/posts/new" for 127.0.0.1 at 2013-10-05 21:17:52 -0400
ActionController::RoutingError (No route matches [POST] "/posts/new"):
actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.13) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.13) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.13) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/static.rb:63:in `call'
railties (3.2.13) lib/rails/engine.rb:479:in `call'
railties (3.2.13) lib/rails/application.rb:223:in `call'
rack (1.4.5) lib/rack/content_length.rb:14:in `call'
railties (3.2.13) lib/rails/rack/log_tailer.rb:17:in `call'
rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/templat
es/rescues/routing_error.erb within rescues/layout (1.0ms)
Habe ich bekommen die gleiche Fehlermeldung mit anderen tutorials, die ich habe versucht zu Folgen, verbatum. Was bin ich?
Dank.
Können Sie veröffentlichen, was zeigt Sie in Ihrem terminal-Fenster, wo die
Versuchen
Ninon -Danke für die Anregung. Ich habe es versucht, aber ich habe immer noch den gleichen Fehler.
oben gepostet.
rails s
server-Befehl ausgeführt wird? Das sollte mehr beschreibenden als nur die Fehlermeldung.Versuchen
form_for Post.new do
. Es sollte das Problem beheben.Ninon -Danke für die Anregung. Ich habe es versucht, aber ich habe immer noch den gleichen Fehler.
oben gepostet.
InformationsquelleAutor user2053119 | 2013-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, dass das Problem eventuell mit dieser Zeile:
Ändern:
Ich hatte das gleiche Problem. Die
/posts/new
geladen, aber wenn ich das Formular abschicken, bekam ich einen routing-Fehler.Sollten Sie die gleiche form haben für
new
undedit
Aktionen, mit einer separaten Datei namens_form.html.erb
im/views/posts
Ordner.Dann in Ihrer
new
undedit
Aussicht, auf den Sie verweisen, diese form mit:Dieser arbeitete für mich, nach viel anfänglicher Verwirrung.
Glück!
InformationsquelleAutor Michael Giovanni Pumo
Erstens, können Sie einfach
<%= form_for @post do |f| %>
.Zweitens der controller braucht, um eine Referenz zu
@post
. Zum Beispiel innew
wäre es@post = Post.new
.Deine Routen sind korrekt. Sie haben die
Post
Klassepost.rb
? Haben Sie alle notwendigen Migrationen?-Ehrlich gesagt, ich weiß nicht, über jene. Dies ist der Anfang des Tutorials, und es ist noch nicht gedeckt-Migrationen noch nicht erwähnt, dass Sie eine Post-Klasse in der post.rb. Der obige code ist der gesamte code, der das tutorial hatte.
InformationsquelleAutor Benjamin Tan Wei Hao
Versuchen, das Modell erstellen, in controller-action:
Controller:
Anzeigen:
Poste auch der generierte html-Code, bitte.
InformationsquelleAutor freemanoid
Ich bin mir nicht sicher, was es behoben. @titanboa--das tutorial noch nicht abgedeckt generieren von Modellen, also ich ging weiter in das tutorial, als ob alles funktionierte. Nach dem generieren des Modells, scheint es nun einwandfrei zu funktionieren. Sorry für das unbefriedigende Fazit, aber danke für den input!
InformationsquelleAutor user2053119
Ist es möglich, dass Sie eine Pfosten-Modell statt des Post-Modell - singular versus plural? Bitte überprüfen Sie die Modell-Datei (post.rb vs. Beiträge.rb) und der name der Klasse in der Datei (nach vs-Beiträge).
Sieht es aus wie 'posts_path' wird zu 'Beiträge/neue' anstelle von 'posts', da aus deiner Fehlermeldung sehe ich, es ist eine POST-Anforderung an 'posts/neuen" beim Absenden des Formulars sollte sich in einer POST-Anforderung an '/posts'.
Vielleicht gibt es andere Gründe, warum 'posts_path' verhält sich so, aber meine erste Vermutung ist, dass die singular - /plural.
Edit: Jetzt habe ich versucht das Problem zu reproduzieren, aber weder das ändern des Modells im Hinblick auf singular/plural und entfernen Sie das Modell vollständig geführt das jeweilige Verhalten für mich.
InformationsquelleAutor titanoboa
Ich hatte das gleiche problem, erst später fand ich heraus, dass ich brauche zu Aktualisieren, klicken Sie nicht auf Zurück-Taste, um zu den posts/neue Seite. Hoffe, es hilft.
InformationsquelleAutor Luxiyalu
Ich hatte das gleiche problem und ich fand die Antwort auf meine Frage in einem anderen thread.
Anderen thread auf die gleiche Frage.
Mein problem war, dass ich mein def-show-Funktion unterhalb der eigenen Funktion in meinem posts_controller-Datei. Alles, was sich darunter Schlüsselwort private auch private offenbar.
InformationsquelleAutor Justin
Hatte ich das gleiche Problem. Ich habe versucht, alle Antworten auf ähnliche Beiträge, und nichts gearbeitet, inklusive der obigen.
Ich auch gelöscht die app und wiederholte den Vorgang und stecken auf das gleiche Problem.
Nach viel frustration, merkte ich, es hatte zu tun mit der text_area Feld. In jedem Fall habe ich kopiert hatte, ein zufälliger text aus einer web-Seite in den body-text-Feld, wirft den Fehler. Ich wusste das, weil ich beschlossen, geben Sie einen beliebigen text anstelle und voila! Er arbeitete auf Unterwerfung.
Gab es nichts auszusetzen. Da die Ruby text_area Attribut hat keine Grenze, ich denke, es hat mit den Figuren, die ich war kopieren von messing mit dem code im hintergrund, da es wandelt, was er nicht versteht, zu HTML, wie hier angegeben.
Dies ist mein Fall und ich dachte, ich sollte teilen.
InformationsquelleAutor Chidozie Nnachor