Ruby on Railsでインスタグラムに似せたものを作っています。
Routing Errorの原因を探り「include UsersHelper」のUsersがUserになっていたので
「s」を追加した所以下のスクショの様になってしまいました。
「s」を消せばまたRouting Errorには戻るのですが
UserHelperがおかしいとエラーが出ていますし、他に修正すべき点も見当たりませんでした。
なので、リダイレクトループを解決しようと試みたのですが
調べたことを試しても解決できませんでした。
この状況をどう解決すれば良いのかわかりません。
どなたかご教授いただけないでしょうか。
発生していたエラーメッセージ
Routing Error uninitialized constant ApplicationController::UserHelper
### ログ
リダイレクトループ時のログ(以下の繰り返し)
Started GET "/sign_in" for 111.239.169.58 at 2021-05-07 16:09:44 +0900
Cannot render console from 111.239.169.58! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by UsersController#sign_in as HTML
User Load (0.3ms) SELECT users
.* FROM users
WHERE users
.id
IS NULL LIMIT 1
Redirected to https://f9f754273af44d24aceed3c212cb7a8a.vfs.cloud9.us-east-1.amazonaws.com/sign_in
Filter chain halted as :authorize rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.3ms)
Routing Error時のログ
Started GET "/sign_in" for 111.239.169.58 at 2021-05-07 16:09:44 +0900
Cannot render console from 111.239.169.58! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by UsersController#sign_in as HTML
User Load (0.3ms) SELECT users
.* FROM users
WHERE users
.id
IS NULL LIMIT 1
Redirected to https://f9f754273af44d24aceed3c212cb7a8a.vfs.cloud9.us-east-1.amazonaws.com/sign_in
Filter chain halted as :authorize rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.3ms)
Started GET "/sign_in" for 111.239.169.58 at 2021-05-07 16:15:30 +0900
Cannot render console from 111.239.169.58! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
ActionController::RoutingError (uninitialized constant ApplicationController::UserHelper):
app/controllers/application_controller.rb:3:in <class:ApplicationController>' app/controllers/application_controller.rb:1:in
<top (required)>'
app/controllers/users_controller.rb:1:in `<top (required)>'
変更部分のソースコード
Ruby
1class ApplicationController < ActionController::Base 2 protect_from_forgery with: :exception 3 include UsersHelper 4end
###該当部分のソースコード
class UsersController < ApplicationController before_action :authorize, expect: [:sign_up, :sign_up_process, :sign_in, :sign_in_process] # サインイン def sign_in @user = User.new render layout: "application_not_login" end # サインイン処理 def sign_in_process # パスワードをmd5に変換 password_md5 = User.generate_password(user_params[:password]) # メールアドレスとパスワードをもとにデータベースからデータを取得 user = User.find_by(email: user_params[:email], password: password_md5) if user user_sign_in(usre) redirect_to top_path and return else flash[:danger] = "サインインに失敗しました。" redirect_to sign_in_path and return end end
試したこと
リダイレクトループの解決法を調べ
ルーティングの順番の入れ替え、再起動を試しましたが変わりありませんでした。
補足情報(FW/ツールのバージョンなど)
Rails 5.1.7
回答1件
あなたの回答
tips
プレビュー