前提・実現したいこと
Rails tutorialの10章をやっています。
10.2.3のフレンドリーフォワーディングを実装をしようとしていますが上手くいきません。
ログイン前に編集ページにアクセスし、ログインしたら編集ページにリダイレクトするはずが
ユーザー詳細ページに飛んでしまう状況です。
発生している問題・エラーメッセージ
1) Failure: UsersEditTest#test_successful_edit_with_friendly_forwarding [/home/ec2-user/environment/sample_app/test/integration/users_edit_test.rb:24]: Expected response to be a redirect to <http://www.example.com/users/762146111/edit> but was a redirect to <http://www.example.com/users/762146111>. Expected "http://www.example.com/users/762146111/edit" to be === "http://www.example.com/users/762146111".
該当のソースコード
Ruby
1[users_edit_test.rb] 2 test "successful edit with friendly forwarding" do 3 get edit_user_path(@user) 4 log_in_as(@user) 5 assert_redirected_to edit_user_url(@user) 6 name = "Foo Bar" 7 email = "foo@bar.com" 8 patch user_path(@user), params: {user: {name: name, 9 email: email, 10 password: "", 11 password_confirmation: ""}} 12 assert_not flash.empty? 13 assert_redirected_to @user 14 @user.reload 15 assert_equal name, @user.name 16 assert_equal email, @user.email 17 end
Ruby
1[sessions_helper.rb] 2 #記憶したURL(もしくはデフォルト値)にリダイレクト 3 def redirect_back_or(default) 4 redirect_to(session[:forwarding_url] || default) 5 session.delete(:forwarding_url) 6 end 7 8 #アクセスしようとしたURLを覚えておく 9 def store_location 10 session[:fowarding_url] = request.original_url if request.get? 11 end
Ruby
1[users_controller.rb] 2 #ログイン済みユーザーかどうか確認 3 def logged_in_user 4 unless logged_in? 5 store_location 6 flash[:danger] = "Please log in." 7 redirect_to login_url 8 end 9 end 10 11 #正しいユーザーかどうか確認 12 def correct_user 13 @user = User.find(params[:id]) 14 redirect_to(root_url) unless current_user?(@user) 15 end
Ruby
1[sessions_controller.rb] 2def create 3 @user = User.find_by(email: params[:session][:email].downcase) 4 if @user && @user.authenticate(params[:session][:password]) 5 log_in @user 6 params[:session][:remember_me] == '1'? remember(@user) : forget(@user) 7 redirect_back_or @user 8 else 9 flash.now[:danger] = 'Invalid email/password combination' 10 render 'new' 11 end 12 end
試したこと
なぜログイン後に編集ページにリダイレクトされないか考えてみましたが
どこが間違っているか分かりませんでした。
補足情報(FW/ツールのバージョンなど)
Ruby on Rails 5.1.4
あなたの回答
tips
プレビュー