2012-09-26 60 views
0

以前有人问过这个问题,但我找不到实际的答案:我如何允许我的用户通过他们注册的相同表单登录?这是方式的客户端请求/需求,我意识到这是很不理想......我也可以使用我的新用户表单登录吗

用户

class UsersController < ApplicationController 
    def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(params[:user]) 
    if @user.save 
     sign_in @user 
     render :json => @user.to_json(:only => [:id]) 
    else 
     render :json => @user.errors, :status => "" 
    end 
    end 
end 

会议

class SessionsController < ApplicationController 
    def create 
    user = User.find_by_email(params[:session][:email]) 
    if user && user.authenticate(params[:session][:email]) 
     sign_in user 
     render :json => @user.to_json(:only => [:id]) 
    else 
     render :json => @user.errors, :status => "" 
    end 
    end 
end 

<%= form_for(@user, :html => { :class => "access"}) do |f| %> 
    <%= f.label :firstname, "Firstname" %> 
    <%= f.text_field :firstname, :placeholder => "Your firstname" %> 
    <%= f.label :surname, "Surname" %> 
    <%= f.text_field :surname, :placeholder => "Your surname" %> 
    <%= f.label :email, "Email Address" %> 
    <%= f.text_field :email, :placeholder => "Your email address" %> 
    <%= f.submit "Verify" %> 
<% end %> 

电子邮件被验证为唯一的,这可能是一个入口点吗?例如。如果电子邮件不是唯一的,请检查名称和电子邮件或其他内容。

我不知道如何去做这件事。

+0

我不确定你想在这里做什么,因为登录和注册是两个不同的过程。如果用户尝试使用现有电子邮件注册,则可以让用户知道您已注册并提示输入密码。 –

+0

是的,我知道他们不同,这就是为什么我卡住了。基本上没有密码,只需使用姓名和电子邮件登录即可。所以我想要的是,如果你不存在,你创建了,但如果你是你登录。 – Jamie

回答

0

我的建议是制作另一个类似AccessController的控制器。它应该使用一个名字,这意味着登录和注册,Access是我所能想到的。该控制器应该能够检查登录凭证并登录或注册。

+0

是的,这是有道理的,我会给它一个去。 – Jamie

+0

确保接受最适合您的答案。 – weexpectedTHIS

相关问题