1

我正在使用设计。当用户“注册”时,他们会进入输入姓名、电子邮件、密码等的页面,然后单击“注册”按钮,如果输入的所有详细信息都正确,他们会继续进入应用程序,这就是应该发生。

我想要做的是添加一个链接,“通过点击“创建帐户”,您确认您接受条款和条件。在注册页面上。就是这样,一个简单的链接 - 没有复选框或任何东西。

在“注册”页面代码上,我有:

            <div class='t_and_c'>

    By clicking "Create Account" you confirm that you accept 
the <%= link_to "Terms and Conditions.", "static_pages#terms_and_conditions" %>
            </div>

但是,每当一个人单击该链接时,它就会不断重新加载“注册”页面——这是它应该做的,因为某处的一些代码告诉应用程序在用户登录之前不要加载任何东西,所以我的问题是:

即使用户未登录,如何仅针对此链接“条款和条件”加载我的 terms_and_conditions.html.erb?我想它是一些 before_filter 或 skip_before 过滤器,但我不知道该怎么做。

4

2 回答 2

5

检查您StaticPagesController是否有任何before_filter,这可能是某种身份验证方法,以防止访问者在未登录的情况下阅读。

如果这是真的,只需在“terms_and_conditions”方法上添加一个排除选项,比如

before_filter :authorize, :except => :terms_and_conditions

或者

before_filter :authorize, :except => [:terms_and_conditions, :other_method_as_well]

添加

根据 OP 的更新,有 before_filter 但过滤器在 parent classApplicationController中。

在这种情况下,您不能简单地在子类中添加另一个 before_filter 来尝试覆盖它。这样做会在过滤器链中再添加一个过滤器。

解决方案是这样skip_before_filter使用

StaticPagesController < ApplicationController
  skip_before_filter :authenticate_user!, only: :terms_and_conditions

方法参考: http ://apidock.com/rails/AbstractController/Callbacks/ClassMethods/skip_before_filter

于 2013-05-11T11:01:26.933 回答
0

排序!我的应用程序确保每个人都必须登录才能通过。除非他们在“注册”页面上单击“条款和条件”链接——这就是我想要的样子。

首先,我整理了我的 routes.rb。如果我不这样做,什么都不会奏效。

代替:

    By clicking "Create Account" you confirm that you accept 
the <%= link_to "Terms and Conditions.", "static_pages#terms_and_conditions" %>

我放:

 By clicking "Create Account" you confirm that you accept 
the <%= link_to "Terms and Conditions.", t_and_c_path %>

在我的 routes.rb 中:

 get "t_and_c", :to => "static_pages#terms_and_conditions"

在最顶部的 ApplicationController 中,我放了:

before_filter :authenticate_user!, :except => :terms_and_conditions

但这行不通;“条款和条件”链接再次进入“注册”页面,告诉我必须注册。

所以上面那位好心的海报说在我的 StaticPagesController 中尝试:

StaticPagesController < ApplicationController
  skip_before_filter :authenticate_user!, only: :terms_and_conditions

所以现在,至少现在我收到了一条错误消息!- 语法错误。我不知道它是否是 Ruby 1.8.7 的东西(我有),但我将代码稍微更改为:

skip_before_filter :authenticate_user!, :only => :terms_and_conditions

现在一切正常。

于 2013-05-11T14:09:09.800 回答