"localhost 반복 리디렉션"해결 방법(ERR TOO MANY REDIRECTS)

3270 단어 RubyRails

오류 상황


간이판 트위터 앱을 제작하여 rails로 화장 서버를 시작하여localhost:3000에서 발생하는 오류를 가속화합니다.지금까지 겪어보지 못한 오류인 만큼 해결책을 기술한다.

잘못된 내용의 가설


오류 화면에 'localhost 반복 방향 바꾸기' 라는 기술이 있습니다.원래localhost:3000에 방문하면,route.rb에서 Twitters 컨트롤러의 index 동작을 실행하고 보기를 표시해야 합니다.
route.rb
Rails.application.routes.draw do
  root 'tweets#index'
  devise_for :users
  resources :tweets do
    resources :comments, only: :create
  end
  resources :users, only: :show
end
그러나 이번 경우 보기 파일 (index.].erb) 을 표시하려고 했는데 읽을 때 방향을 바꿨습니다. 이것은 잘못된 것입니다.
따라서 컨트롤러의 표시가 일으킨 오류로 추정된다.

컨텐트 수정


그럼 바로 컨트롤러 기술 확인해.
로그인하지 않은 사용자가 index에 접근하려고 시도할 때, move -to_index를 실행하고 index 동작으로 방향을 바꿉니다.
tweets_controller.rb
class TweetsController < ApplicationController
  before_action :move_to_index

  def index
    @tweets = Tweet.includes(:user).order('created_at DESC').page(params[:page]).per(2)
  end

(省略)

  def move_to_index
    redirect_to action: :index unless user_signed_in?
  end
end
질문to_index라고 해서 무한 순환이 일어났어요.이 문제는 이번 잘못을 야기시켰다.

해결책


index 동작에 접근할 때, 반복적으로 index 동작을 바꾸면 무한 순환이 발생하기 때문에 다음과 같은 수정을 통해 오류를 해결할 수 있습니다.

before


tweets_controller.rb
before_action :move_to_index

after


tweets_controller.rb
before_action :move_to_index,except: :index

좋은 웹페이지 즐겨찾기