Ruby on rails 如何在使用Desive的应用程序中创建公共页面
我正在Rails 4应用程序中使用Desive进行身份验证。几乎所有的应用程序都要求用户进行身份验证,然而,也有一些“公共”页面(条款和条件——诸如此类的东西) Desive本身使用Ruby on rails 如何在使用Desive的应用程序中创建公共页面,ruby-on-rails,ruby-on-rails-4,devise,Ruby On Rails,Ruby On Rails 4,Devise,我正在Rails 4应用程序中使用Desive进行身份验证。几乎所有的应用程序都要求用户进行身份验证,然而,也有一些“公共”页面(条款和条件——诸如此类的东西) Desive本身使用prepend\u-before\u过滤器将注册和登录页面公开:不需要验证。然而,这种方法并不适用。Desive似乎并没有提供一种“适当”的方式来公开单个行为 那么,什么才是将一些行为公之于众的最好方式呢 到目前为止,我能想到的唯一方法是: 要使新的公共命名空间,并具有用于公共操作的单独控制器,这些控制器从公共控制器
prepend\u-before\u过滤器将注册
和登录
页面公开:不需要验证
。然而,这种方法并不适用。Desive似乎并没有提供一种“适当”的方式来公开单个行为
那么,什么才是将一些行为公之于众的最好方式呢
到目前为止,我能想到的唯一方法是:
公共
命名空间,并具有用于公共操作的单独控制器,这些控制器从公共控制器
继承,该控制器在\u筛选之前不执行:authenticate\u user代码>
PublicController
可以充当任何需要公开的内容的存储桶,而在现阶段这并不多是否有更好的方法使用Desive将个人行为公开?在控制器中,您希望:
before_action :authenticate_user!, :except => [:index]
这将执行:验证用户除索引
操作外,所有操作的代码>方法。
您可以从中找到更多解释。您可以选择对公共控制器使用“先跳过后执行”操作。示例来自:
class LoginsController
如果我在做:验证用户,那就行了!在每个控制器的基础上,但目前它在我的超类中。@joshua.paling我不知道你的结构,但当我在做诸如条件条款
或关于
之类的页面时,我会为所有公共页面创建单独的控制器。是的,他完全正确,在操作之前跳过
就是你需要的。很抱歉回答错误,我不知道您有身份验证用户代码>在超类中,这正是我需要的!谢谢。@Pedro请将链接中的相关信息复制/粘贴到您的答案中。
class LoginsController < ApplicationController
skip_before_action :require_login, only: [:new, :create]
end