Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在使用Desive的应用程序中创建公共页面_Ruby On Rails_Ruby On Rails 4_Devise - Fatal编程技术网

Ruby on rails 如何在使用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似乎并没有提供一种“适当”的方式来公开单个行为 那么,什么才是将一些行为公之于众的最好方式呢 到目前为止,我能想到的唯一方法是: 要使新的公共命名空间,并具有用于公共操作的单独控制器,这些控制器从公共控制器

我正在Rails 4应用程序中使用Desive进行身份验证。几乎所有的应用程序都要求用户进行身份验证,然而,也有一些“公共”页面(条款和条件——诸如此类的东西)

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