前提・実現したいこと
Ruby on RailsでRailsチュートリアル8章のログイン機構の内容をオリジナルアプリケーションで使用したいと思い、
チュートリアルにそって、Sessionsコントローラを生成し、名前付きルーティングでloginルーティングを設定しました。
loginリソースへのgetリクエストが成功することを確かめるために、
controllerSpecを作成し、テストを実行したところ、
コントローラーはsessionsコントローラーが使用されていることを確認できたのですが、
アクションでnewアクションが使用されるはずが、loginアクションを使用しようとし、以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
ActionController::UrlGenerationError: No route matches {:action=>"/login", :controller=>"sessions"}
ソースコード
routes.rb
Rails.application.routes.draw do root to: 'books#index' get '/signup', to: "users#new", as: 'sign_up' get 'login', to: 'sessions#new' post 'login', to: 'sessions#create' delete 'logout', to: 'sessions#destoroy' resources :books resources :users end
sessions_controller.rb
class SessionsController < ApplicationController def new end end
sessions_controller_spec.rb
require 'rails_helper' RSpec.describe SessionsController, type: :controller do describe "GET #new" do it "returns http success" do get login_path expect(response).to have_http_status(:success) end end end
Rspecのコントローラースペック、ルーティングに関して、ググりましたが、解決することができませんでした。
どなたか解決方法のご教示を宜しくお願いします。
なお、rails_helper.rbに下記は書いています。
config.include Rails.application.routes.url_helpers
また、ブラウザからの、http://localhost:3000/loginへのアクセスは成功し、sessions/new.html.slimにアクセスできており、newアクションが使用されています。
あなたの回答
tips
プレビュー