在Rails3中使用相同的提交按钮登录/注册

时间:2011-08-19 08:34:35

标签: ruby-on-rails-3 authentication authlogic

我尝试过到处寻找,但似乎无法找到答案。

我在我的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

1 个答案:

答案 0 :(得分:0)

Imho,你在user_sessions / new中创建用户的方法应该有用。

遗憾的是你不再拥有你的代码了。以下是我能想到的问题:当您创建新用户时,请确保将用户设为active,因为Authlogic不允许您为非活动用户创建UserSession

此处还有一个提示:使用像git

这样的VCS

如果你有一些新的或疯狂的想法,只需从你的主人那里建立一个新的分支。您不必还原任何东西,只需切换分支,如果您的crazy_idea分支变得过于疯狂,可能会删除它们。