2016-07-27 17 views
1

Hallo bin ich eine Grundform für einen Artikel einzurichten versuchen, und ich erhalte die folgende Fehlermeldung, wenn ich das Formular abschicken: No route matches [POST] "/"Rails Routing-Fehler Keine Route treffer [POST] „/“

Hier ist die Form (ich weiß, ich kann form_for, aber ich versuche, es zu tun, ohne):

<form accept-charset="UTF-8" action="<% articles_path %>" method="post"> 

    <input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>"> 
    <input type="text" name="title" placeholder="title"> 
    <input type="text" name="body" placeholder="body"> 
    <input type="submit"> 

</form> 

Hier ist meine routes.rb:

Rails.application.routes.draw do 


    resource :articles, only: [:new, :create] 
    root to: 'articles#new' 
end 

Hier sind meine Routen:

articles_path POST /articles(.:format) articles#create 
new_articles_path GET /articles/new(.:format) articles#new 
root_path GET/ articles#new 

Was ich nicht verstehe ist, dass meine Formularaktion articles_path mit einer Post-Methode ist, und die Anwendung sucht nach einer Post-Anfrage an die root-Route. Sollte es nicht zu meiner articles_path POST Route gehen? Dasselbe passiert, wenn ich das Formular von Artikeln/neu absende, außer es gibt keine Route POST für Artikel/neu.

Ich habe ähnliche Fragen und die Lösung war immer etwas mit der Form Aktion zu tun, die ich richtig so weit, wie ich sagen kann, so dass ich dachte, dass ich meine eigenen fragen würde.

Antwort

1

Du eine = in <% articles_path %> fehlt. Ihr <form> Tag soll sein:

<form accept-charset="UTF-8" action="<%= articles_path %>" method="post"> 

Ohne die =, die HTML-Ausgabe action="" enthalten haben würde, so dass das Formular an die URL der aktuellen Seite zu schreiben.

+0

Dank, dass es gelöst. – srlrs20020

+0

@ srlrs20020 mit 'statt form_for' versuchen, Sie könnte es ein wenig leichter in die Zukunft finden. – fbelanger

Verwandte Themen