CHa*_*ris 1 ruby ruby-on-rails devise
我正在使用设计.当用户"注册"时,他们会转到他们输入姓名,电子邮件,密码等的页面,然后单击"注册"按钮,如果输入的所有详细信息都正确,他们会进入应用程序,这就是应该发生.
我想要做的是添加一个链接,'通过点击"创建帐户",您确认您接受条款和条件.在注册页面上.就是这样,一个简单的链接 - 没有复选框或任何东西.
在"注册"页面代码我有:
<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>
Run Code Online (Sandbox Code Playgroud)
但是每当有人点击链接时,它就会不断重新加载"注册"页面 - 这应该是它应该做的,因为某些代码告诉应用程序在用户登录之前不加载任何内容,所以我的问题是:
如果只是为了这个链接'条款和条件',我可以加载我的terms_and_conditions.html.erb,即使用户没有登录吗?我认为这是一些before_filter或skip_before过滤器,但我不知道如何去做.
检查你的StaticPagesController是否有任何before_filter,这可能是一些验证方法,以防止访客阅读,除非登录.
如果是这样,只需在"terms_and_conditions"方法上添加一个exclude选项,例如
before_filter :authorize, :except => :terms_and_conditions
Run Code Online (Sandbox Code Playgroud)
要么
before_filter :authorize, :except => [:terms_and_conditions, :other_method_as_well]
Run Code Online (Sandbox Code Playgroud)
根据OP的更新,有before_filter但过滤器在父类中ApplicationController.
在这种情况下,您不能简单地在子类中添加另一个before_filter来尝试覆盖它.这样做会在过滤器链中再添加一个过滤器.
该解决方案是使用skip_before_filter这样的
StaticPagesController < ApplicationController
skip_before_filter :authenticate_user!, only: :terms_and_conditions
Run Code Online (Sandbox Code Playgroud)
方法参考: http ://apidock.com/rails/AbstractController/Callbacks/ClassMethods/skip_before_filter
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |