2011-08-19 69 views
1

我已經試過遍地搜索,但似乎無法找到答案。在Rails3中使用同一個提交按鈕登錄/註冊

我在我的Rails應用程序中使用Authlogic進行身份驗證。我希望允許用戶使用相同的表單登錄或註冊,並提交相同的提交操作/按鈕。我要做的一個例子是tumblr如何處理他們的登錄/註冊:http://www.tumblr.com/

當用戶輸入他們的電子郵件地址和密碼時,如果他們已經有一個帳戶,它會將他們登錄到他們的帳戶儀表板。可以使用相同的表單創建新的博客(使用URL文本字段)。

我的實際形式非常簡單:

= form_for(@user_session) do |f| 
    = f.text_field :email, :placeholder => "email address" 
    = f.password_field :password, :placeholder => "password" 
    = f.submit "get started" 

我試圖創造一個重定向到根據用戶是否已經存在相應的控制器應用控制器自定義操作,但無濟於事:

def login_or_register 
    params[:user] = params[:user_session] 
    if User.find_by_email(params[:user][:email]) 
     redirect_to :controller => "user_sessions", :action => "create" 
    else 
     redirect_to :controller => "users", :action => "create" 
    end 
    end 

然後,我試着創建一個新的用戶,如果它不存在從user_sessions/new頁面(在UserSessions控制器內)。同樣,我試圖而不是創建一個新的用戶,然後從Users控制器自動登錄。這兩種方法都沒有奏效,現在我已經恢復了我的代碼,所以我沒有使用過的示例。

任何幫助或建議將不勝感激...非常感謝你!

-Z

回答

0

恕我直言,在其中創建用戶user_sessions /如果他不存在,應該工作的新辦法。

很遺憾你沒有你的代碼了。以下是我能想到的一個問題:當您創建新用戶時,請確保您的用戶名爲active,因爲Authlogic不會讓您爲非活動用戶創建UserSession

而且,這裏有個小技巧:使用VCS像git

如果你有一些新的或瘋狂的想法只是做一個新的分支從你的主人。你不必恢復任何東西,只需切換分支,並可能刪除它們,如果你的crazy_idea分支變得太瘋狂了。

+0

謝謝,使用'crazy_idea'分支是個好主意。我實際上使用的是git,但是因爲我試圖做的沒有工作,所以我沒有提交任何內容。 – Zkoh