リダイレクト処理を行うと多重reder or redirectだと下記のように怒こられます。
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
エラー文に従いand return
を記述することでとすることで無事遷移することが出来るのですが、
なぜ多重遷移となるのかわかりません。
下記該当のコントローラーになります。
class HomeController < ApplicationController def top @posts = Post.all.order(created_at: :desc) @map = Map.all @arr=[] @map.each do |m| @arr.push({lat: m.latitude, lng: m.longitude }) end if user_signed_in? redirect_to posts_path and return end end def about end private def home_params params.require(:post).permit(:body, :road, :tag_list, maps_attributes: [:latitude, :longitude]) end end
参考までにapplicationコントローラーも載せます。
class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? skip_before_action :verify_authenticity_token def after_sign_in_path_for(resource) posts_path # ログイン後に遷移するpathを設定 end def after_sign_out_path_for(resource) root_path # ログアウト後に遷移するpathを設定 end def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) end end
よろしくお願いします。
参考記事
ruby on rails - How to fix 'Render and/or redirect were called multiple times in this action' - Stack Overflow
Layouts and Rendering in Rails — Ruby on Rails Guides
回答1件
あなたの回答
tips
プレビュー