ActionController :: RoutingError: Нет подходящих маршрутов [POST] - PullRequest
1 голос
/ 14 октября 2011
    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 == "/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 path? Второй тест проходит, хотя путь должен быть правильным? Что я делаю не так?

Спасибо! * * 1004

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

Трудно сказать, что здесь происходит.В общем, если вы задаете вопрос об ошибке маршрутизации, вы должны также опубликовать то, что находится в вашем файле rout.rb.

При этом я думаю, что для любого HTML-кода, генерируемого для формы, действие указано неверно.

Примеры маршрутов:

    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"}

Обратите внимание, где там написано POST во втором столбце.Это означает, что атрибут действия для новой формы объекта должен быть установлен в / теги.Наличие этого говорит Rails визуализировать действие create в контроллере Tags.То же самое будет верно для вашей модели входа в систему.

Что касается того, как на самом деле выглядит HTML-код вашей формы, он, вероятно, выглядит примерно так:

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

Когда это должно быть

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

Надеюсь, это поможет.

0 голосов
/ 14 октября 2011

Я думаю, что форма в вашем файле представления имеет пустой action -атрибут, поэтому она помещает форму в /logins/new вместо, например./logins, что, вероятно, соответствует вашей create -акции.

...