2016-04-14 24 views
0

我正在开发一个项目。我有两种模式,一种是用户(设计)与角色,另一种是商人。所有应用程序用户都存储在与那里角色关联的用户表中。 适用于商户零件。我遇到了一些问题。 我接受商家注册为请求。因此,要发送商家申请应用程序,用户只会提供他们的电子邮件地址,应用程序将检查用户表以查看该电子邮件地址是否已注册。如果它已被注册,它将发送一条消息,如“电子邮件地址已被使用并建议注册用户”,否则它会将电子邮件地址存储在会话中(或其他)或呈现商家请求表单。用户将提交申请和申请。所有输入字段以及电子邮件地址都存储在商家表中。Rails找到一个用户并渲染表格

我试过但不行。所以,请告诉我如何完成这项任务。

def create 
    if params[:email] == User.find_by_email(params[:email]) 
     flash[:notice] = "Email address already in use!" 
     redirect_to new_merchant_path 
    else 
     render 'form' 
    end 
end 
+0

欢迎来到StackOverflow。你能发布你试过的控制器代码吗?您更有可能在您的帖子中使用代码获得高质量的答案。 – trh

+0

感谢@trh,我用控制器代码更新了问题。 –

回答

0

看起来你很接近。

因为

User.find_by_email(params[:email]) 

当数据库中找到和nil如果不

def create 
    if User.find_by_email(params[:email]) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 

会为你工作,使用户返回对象。 由于拥塞,如果需要在视图上显示用户,则应将结果存储在实例变量中。

def create 
    if @user = User.find_by_email(params[:email]) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 
+0

它不工作,对于这两种情况,其渲染'表' –

+0

你可以确认电子邮件'params [:email]'保存在数据库? –

+0

我的数据库中有电子邮件 –

0

我想你想要做的是这样的。

def create 
    if (@user = User.find_by(email: params[:email])) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 

然后你就可以使用@user变量在form.html.erb

+0

它不起作用。你有其他解决方案吗?其他逻辑使用jQuery或其他。 –

0
if params[:email] == User.find_by_email(params[:email]) 

此行是不是做你认为它是。你正在通过params [:email]在数据库中查找用户,但是你将整个用户对象与params [:email]进行比较。

def create 
    #this returns true or false 
    if User.exists?(email: params[:email]) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 
+0

它不工作。对于这两种情况的渲染形式 –