会话“表单中的第一个参数不能包含nil或为空”错误

时间:2016-03-12 15:40:49

标签: ruby-on-rails forms null

在为我的网站处理会话功能时,我在会话视图中遇到了以下错误

rails sessions error

这是我的会话控制器的以下代码:

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

  def create
  @user = User.find_by(email: params[:user][:email])
      if @user && @user.authenticate(params[:user][:password])
        session[:user_id] = @user.id
          redirect_to @user
      else
        flash[:notice] = "Failed to login, please try again"
        render 'new'
      end
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url
  end

end

我的会话帮助方法:

 module SessionsHelper

  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

  def logged_in?
    !!current_user
  end
end

和观点:

 <h1>Log In</h1>

<%= form_for(@user, url: login_path) do |f|%>

<% if flash[:notice] %>
  <div class="notice"><%= flash[:notice] %></div>
<% end %>

<%= f.label :email %>
<%= f.text_field :email%><br>
<%= f.label :password %>
<%= f.password_field :password%><br>
<%= f.submit "Log In", class: "btn btn-primary", style: "width: 200px" %>
<%end%>

我的用户注册路径正常工作并创建用户类的实例。当用户填写登录表单并点击提交按钮时会发生错误,然后提交按钮会将其重定向到他们的个人资料。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

改变这个:

while(Boolean.FALSE.equals(mysqlStatus)) //also handle NULL

答案 1 :(得分:0)

class SessionsController < ApplicationController

  def create
    @user = User.find_by(email: params[:user][:email])
    @user = User.new if @user.blank?

    ##rest of your logic comes here
  end

end

希望它有所帮助!!