1
require 'test_helper' 

    class MyTest < ActionController::IntegrationTest 

     test "view posts from login page" do 
     visit("/logins/new") 
     find_field('Username').set('abode') 
     find_field('Password').set('efghi') 
     click_link_or_button('Login') 
     assert page.has_content?('Signed in!') 
     end 

     test "go to new user page" do 
     visit("/logins/new") 
     click_link("New user?") 
     assert (current_path == "https://stackoverflow.com/users/new") 
     end 

    end 

    Error: 
test_view_posts_from_login_page(MyTest): 
ActionController::RoutingError: No route matches [POST] "/logins/new" 
    test/integration/view_posts_test.rb:12:in `block in <class:MyTest>' 

12 번째 줄에 오류가 표시됩니다. "로그인"단추 또는/logins/new 경로에 문제가 있습니까? 두 번째 테스트는 통과하지만 올바른 경로 여야합니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?ActionController :: RoutingError : [POST]와 일치하는 경로가 없음

감사합니다.

답변

3

여기에 무슨 일이 일어나고 있는지 알기가 정말 어렵습니다. 일반적으로 라우팅 오류에 관해 질문하는 경우 routes.rb 파일에있는 내용을 게시해야합니다.

즉, 폼에 대해 생성 된 HTML은 모두 동작이 잘못 지정되었다고 생각합니다.

예 경로 : 거기 두 번째 열에서 POST를 말한다

tags GET /tags(.:format)    {:action=>"index", :controller=>"tags"} 
     POST /tags(.:format)    {:action=>"create", :controller=>"tags"} 
new_tag GET /tags/new(.:format)   {:action=>"new", :controller=>"tags"} 
edit_tag GET /tags/:id/edit(.:format)  {:action=>"edit", :controller=>"tags"} 
    tag GET /tags/:id(.:format)   {:action=>"show", :controller=>"tags"} 
     PUT /tags/:id(.:format)   {:action=>"update", :controller=>"tags"} 
     DELETE /tags/:id(.:format)   {:action=>"destroy", :controller=>"tags"} 

알 수 있습니다. 즉, 새 오브젝트 양식의 조치 속성을/tags로 설정해야합니다. Rails가 Tags 컨트롤러에서 create 액션을 렌더링하도록 지시합니다. 로그인 모델에 대해서도 마찬가지입니다.

<form ... action="/logins/new" ...>...</form> 

가이 도움이

<form ... action="/logins" ...>...</form> 

희망해야한다 :

는 지금까지 양식 HTML 코드가 실제로 어떻게 생겼는지 등, 아마의 라인을 따라 뭔가를 보인다.

+0

예 id 도움이됩니다. 나는 내 실수를 깨달았다. 'match'/ logins/new ', : controller =>'logins ', : action =>'new ' resources : logins'을 추가했습니다. 감사! – Ava

+0

왜 거기에 성명서가 필요한지 잘 모르겠습니까? 'resources : logins' 만 있으면 충분합니다. –

+0

+1 정말 도움이되었습니다. –

0

보기 파일의 양식에 빈 action -attribute가있는 것 같아서 예를 들어 /logins/new 대신 양식을 게시합니다. /logins은 아마도 create -action에 매핑됩니다.