【发布时间】:2025-12-25 11:45:07
【问题描述】:
我的网站应该像 facebook.com 一样工作。 如果用户已登录并且转到“/”,则它应该呈现为 home 控制器。如果它没有被记录,它应该是渲染 landing_page 控制器
"/" && user_signed_in? ---> home 控制器
"/" && user_not_logged ---> landing_page 控制器
我正在使用 Rails 4 和 Devise
应用控制器
class ApplicationController < ActionController::Base
before_filter :authenticate_user!
end
Routes.rb
get "landing_page/index"
root 'home#index', :as => :home
如何在除“landing_page”控制器之外的每个控制器中运行的 ApplicationControl 中保留一个“before_filter”?
更新
如果我转到“/en/landing_page”,它会正确呈现landing_page 控制器(注销),但如果我转到“/”,它会将我重定向到“/users/sign_in”
class LandingPageController < ApplicationController
skip_before_action :authenticate_user!
def index
end
end
class ApplicationController < ActionController::Base
before_action :authenticate_user!
end
Routes.rb
root 'landing_page#index'
【问题讨论】:
标签: ruby-on-rails devise ruby-on-rails-4 rails-routing