2010-10-30 66 views
0

我使用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

回答

1

你可以做你有什麼已經或:

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