2016-05-14 7 views
-1

Ich versuche, einen Boten App zu machen, was ich tat falsch gemacht habe I und Fehler erhalten, dass keine Strecke Streichhölzer sagte [POST] "/ message/new"Schienen Fehler in Post-Anforderung

/message_controller.rb

class MessageController < ApplicationController 
    def new 
    @message=Message.new 
    end 

    def create 
    @message=Message.new(:name,:email,:body) 
    if @message.save 
     redirect_to "message/view_all" 
    end 
    end 

    def view_all 
    end 
end 

app/views/message/new.html.erb

<%=form_for :message do |f|%> 
    <h3>name</h3> 
    <%=f.text_field :name %><br> 
    <%=f.text_field :email %><br> 
    <%=f.text_area :body %> 
    <%=f.submit%> 
<%end%> 

config/routes.rb

Rails.application.routes.draw do 
    get 'message/new' 
    post "message/create"=>"message#create" 
    get 'message/view_all' 
end 

Lösung in der Steuerung:

def create 
    @message=Message.new(params.require(:message).permit(:name,:email,:body)) 
    if @message.save 
     redirect_to "/message/view_all" 
    end 
    end 

in den Ansichten

<%=form_for @message, url:{action: "create"} do |f|%> 
<h3>name</h3> 
<%=f.text_field :name %><br> 
<%=f.text_field :email %><br> 
<%=f.text_area :body %> 
<%=f.submit%> 
<%end%> 

in den Routen

post "message/create"=>"message#create" 

sorry für die Mühe

Antwort

1

in Ihrem Strecken, Sie nur get 'message/new' haben, sollten Sie Ihre Routen durch ersetzen:

Rails.application.routes.draw do 
    resources :messages 
    get 'message/view_all', to: "messages#view_all" 
end 

Auch in Ihrem Formular ersetzen :message durch @message