如何在使用设计的应用程序中创建公共页面

时间:2014-10-09 00:08:17

标签: ruby-on-rails ruby-on-rails-4 devise

我在Rails 4应用程序中使用设计进行身份验证。几乎所有的应用程序都要求用户进行身份验证,但是,有一些公共'页面(条款和条件 - 那种东西)。

使用sign up设计自己使sign inprepend_before_filter :require_no_authentication页面公开。但是,该方法is intended only for devise controllers。并且设计似乎并没有提供一个适当的'公开单一行动的方法。

那么,公开几项行动的最佳方式是什么?

到目前为止,我能想到的唯一方法是:

  1. 创建一个新的public命名空间,并为公共操作设置单独的控制器,这些控制器从未执行PublicController的{​​{1}}继承

  2. 与上面相同,但抛弃了继承和命名空间。所以before_filter :authenticate_user!可以作为任何需要公开的东西的桶 - 在这个阶段并不多。

  3. 有没有更好的方法通过设计公开个人行动?

2 个答案:

答案 0 :(得分:4)

在您的控制器中,您希望:

before_action :authenticate_user!, :except => [:index]

这将对除:authenticate_user!操作之外的所有操作执行index方法。 您可以在此answer找到更多解释。

答案 1 :(得分:4)

您可以选择将skip_before_action用于公共控制器。 guides的示例:

class LoginsController < ApplicationController
  skip_before_action :require_login, only: [:new, :create]
end