如何清除密码填写注册/注册authlogic错误?

问题描述:

我使用Ruby 1.8.7,Rails 2.3.8,并使用Authlogic 2.1.6进行注册,登录,注销。事实上,这三件事几乎是我所做的一切!如何清除密码填写注册/注册authlogic错误?

在注册期间,如果用户的注册信息有错误,我希望密码和password_confirmation字段在视图重绘时为空。我认为一个能清除在UsersController中的字段,如下所示:

class UsersController < ApplicationController 
before_filter :require_no_user, :only => [:new, :create] 

def create 
    @user = User.new(params[:user]) 
    if @user.save 
    @user.save 
    flash[:success] = "Registration successful!" 
    redirect_back_or_default root_path 
    else 
    @user.password = "" 
    @user.password_confirmation = "" 
    @page_title = "Registration" 
    end 
end 
... 

的password_confirmation场成功通过这段代码被清除,但密码字段不是。我在'else'之后插入了一个调试器调用,果然,@ user.password的值不会被'@ user.password'行所改变。我猜测在Authlogic中有一些东西是在我试图清除它之后恢复该字段的值。 (我也尝试将它设置为'零',结果相同)。

我已经想出了一个变通办法,我明确地设置窗体字段的值设置为“”的观点:

   <%= form.password_field :password, :value => "" %> 

但这似乎不是我的理想方式,以不处理它!

+0

好处是,必须解决这个问题才能在rspec中更好地测试我的视图。一切都是学习体验! – Iain 2010-10-30 16:15:31

你可以做你有什么已经或:

def create 
    if @user_session.save 
    ... 
    else 
    params[:users][:password] = '' 

个人而言,我会坚持自己拥有什么。

+0

那个也适用。我想我喜欢你的解决方案比我的更好,因为我觉得在控制器中拥有那种东西,而不是视图更正确... – Iain 2010-10-30 19:47:51

+0

好吧,我撒谎了。您的解决方案不起作用。我回到在视图中使用值=>“”来解决问题。关于我现在唯一清楚的是,我不知道何时/如何填写现场数据。 :) – Iain 2010-10-30 19:59:55

+0

无论是/还是真的。你在视图中抑制输出,所以它确实属于它的位置。公约倾向于苗条的控制器,我认为这是不必要的混乱。请注意,拼写错误的用户而不是用户是它不工作的原因。 – mark 2010-10-30 20:01:31