2016-06-04 3 views
0

도움이 필요합니다. ROR을 사용하여 양식 데이터를 게시하는 동안 다음과 같은 오류가 발생합니다.ROR을 사용하여 양식을 제출하는 동안 라우팅 오류가 발생했습니다.

No route matches [POST] "/articles/new" 

Rails.root: C:/Sites/blog 
Application Trace | Framework Trace | Full Trace 

Routes 

Routes match in priority from top to bottom 
Helper HTTP Verb Path Controller#Action 
Path/Url   
articles_path GET  /articles(.:format)  articles#index 
    POST /articles(.:format)  articles#create 
new_article_path GET  /articles/new(.:format)  articles#new 
edit_article_path GET  /articles/:id/edit(.:format) articles#edit 
article_path GET  /articles/:id(.:format)  articles#show 
    PATCH /articles/:id(.:format)  articles#up 

아래 코드를 설명하고 있습니다.

new.html.erb :

<%= form_for @article 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 %> 

date 

사용자가이 형태를 그 오류 유형을 제출한다 route.rb 파일 아래에 주어진다 coming.My이다.

Rails.application.routes.draw do 
    resources :articles 
    root 'welcome#index' 
end 

내 컨트롤러 파일 코드는 아래와 같습니다.

class ArticlesController < ApplicationController 
    def new 

    end 
    def create 
     @article = Article.new(article_params) 
    if @article.save 
     redirect_to @article 
    else 
     render 'new' 
    end 
    end 
end 

이 오류를 해결하는 데 도움 호야 레일즈 버전 4.2...를 사용하고 있습니다.

+0

기본 레일을'new' 행동이'수/기사/new'를 얻을 수 있지만, 기본'create' 동작이'POST/articles' 될 것입니다 (없이 마지막에는'/ new'); 양식이 잘못된 URL에 제출되고 있습니다. 그건 그렇고,'def new '컨트롤러 메소드에'@article = Article.new'가 들어 있지 않아야합니까? – GoBusto

+0

답을 편집 할 수 있습니까? – subhra

답변

0

new 조치가 GET /articles/new하여야 할 기본 레일,하지만 기본 create 조치는 (끝 부분에있는 /new없이) POST /articles 것; 귀하의 양식이 어떻게 든 잘못된 URL에 제출되고 있습니다.

에 신속하게 다시 작성이 시나리오를, 나는 터미널에 다음을 입력 :

rails new blog 
cd blog 
rails generate scaffold articles 
rake db:migrate 
rails s 

... 다음 def new 방법과 문서 컨트롤러 생성 :

# GET /articles/new 
def new 
    @article = Article.new 
end 

내가 탐색을 "새 기사"를 클릭 한 다음 "기사 작성"을 클릭하기 전에 내 브라우저에서 http://127.0.0.1:3000/articles으로 이동하십시오. 오류가 발생하지 않았습니다. (귀하의 질문에 컨트롤러 코드와 일치하는) def new에서 @article = Article.new 라인을 제거하지만

다음과 같은 오류가 "새 기사"페이지에 표시 원인 : 잘 모르겠어요

ArgumentError in Articles#new 

First argument in form cannot contain nil or be empty 

Extracted source (around line #1): <%= form_for(@article) do |f| %> 

방법을 그럭저럭 No route matches [POST] "/articles/new" 메시지를 볼 수있을 정도로 멀리까지 갔지만, 나는 누락 된 @article = Article.new 라인이 그 메시지와 관련이 있다고 생각합니다.

-1

당신은 추가하여이 작업을 수행 할 수 있습니다 :

def new 
    @article = Article.new 
end 
관련 문제