2011-08-19 70 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