Rails找到用户并呈现表单

时间:2016-04-14 14:22:05

标签: ruby-on-rails ruby devise

我正在开展一个项目。我有两个模型,一个是带有角色的用户(设计),另一个是商家。所有应用程序用户都存储在与该角色关联的用户表中。 对于商家部分。我遇到了一些问题。 我接受商家注册为请求。因此,要发送商家请求申请,用户将仅提供其电子邮件地址,并且应用程序将检查用户表以查看该电子邮件地址是否已注册。如果已经注册,它将发送一条消息,例如"电子邮件地址已被使用,并建议注册用户"否则它会将电子邮件地址存储在会话中(或其他)或呈现商家请求表单。用户将提交申请和申请。所有输入字段和电子邮件地址都存储在商家表中。

我试过但不能。所以,请建议我如何完成这项任务。

    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

3 个答案:

答案 0 :(得分:0)

看来你很亲密。

fun initialize(activity: Activity, vararg settings: settings) =
    JavaClass.initialize(activity, *settings)

在数据库中找到用户对象,如果不是

,则返回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

答案 1 :(得分: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

然后您可以在form.html.erb

中使用@user变量

答案 2 :(得分:0)

@defining(player.rank) { rank =>
    @defining(player.id) { id =>
        @if(rank == "Great") {
            <span key="@id">@rank</span>
        }
        @if(rank == "Good") {
            <span key="@id">@rank</span>
        }
        
        <select key="@id">
        @for((key, value) <- model.getAllRankings()){
            <option id="@key" @if(rank == value) {selected}>@value</option>
        }
        </select>
    }
}

这条线并没有做你想象的那样。您可以通过参数[:email]在数据库中查找用户,但是您要将整个用户对象与params [:email]进行比较。

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