Ruby on rails Rails查找用户并呈现表单

Ruby on rails Rails查找用户并呈现表单,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我正在做一个项目。我有两个模型,一个是具有角色的用户(设计),另一个是商家。所有应用程序用户都存储在与这些角色关联的用户表中。 对商人来说。我有点问题。 我接受商户注册的要求。因此,要发送商户请求应用程序,用户只需提供其电子邮件地址,应用程序将检查用户表,查看电子邮件地址是否已注册。如果已注册,它将发送类似“电子邮件地址已被使用并建议注册用户”的消息,否则它将在会话(或其他)中存储电子邮件地址,或提交商户申请表。用户将提交应用程序和应用程序。所有输入字段以及电子邮件地址都存储在merchants

我正在做一个项目。我有两个模型,一个是具有角色的用户(设计),另一个是商家。所有应用程序用户都存储在与这些角色关联的用户表中。 对商人来说。我有点问题。 我接受商户注册的要求。因此,要发送商户请求应用程序,用户只需提供其电子邮件地址,应用程序将检查用户表,查看电子邮件地址是否已注册。如果已注册,它将发送类似“电子邮件地址已被使用并建议注册用户”的消息,否则它将在会话(或其他)中存储电子邮件地址,或提交商户申请表。用户将提交应用程序和应用程序。所有输入字段以及电子邮件地址都存储在merchants表中

我试过了,但没有成功。所以,请建议我如何做这个任务

    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
看来你很接近了

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

我想你要做的就是这样

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
然后,您可以在
form.html.erb

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

欢迎来到StackOverflow。你能发布你试过的控制器代码吗?你更可能在帖子中用代码获得高质量的答案。谢谢@trh,我用控制器代码更新了问题。它不起作用,对于这两种情况,它的呈现“形式”你能确认
params[:email]
上的电子邮件保存在数据库中吗?我的数据库中有电子邮件它不起作用。对于这两种情况,其渲染都不起作用。你还有其他解决办法吗。使用jQuery或else的其他逻辑。