尝试在一个方法中为同一变量定义两个不同的值。轨道

时间:2016-11-06 10:53:53

标签: ruby-on-rails ruby

我正在尝试为会话控制器中的一个变量定义两个不同的值。我得到"语法错误,意外的keyword_elsif,期待关键字_end"和"语法错误,意外的输入结束,期待keyword_end"。 elsif或者我的语法显然有问题。我想知道我做错了什么或有人告诉我一个不同的方法来做这件事。

def create
  unless user = User.from_omniauth(env["omniauth.auth"])

  user = User.find_by(email: params[:session][:email].downcase)
  if user && user.authenticate(params[:session][:password])
    log_in user
    redirect_to user
     # Log the user in and redirect to the user's show page.
  else
     # Create an error message.
    flash.now[:danger] = 'Invalid email/password combination'
    render 'new'
  end 

  elsif 
    user = User.from_omniauth(env["omniauth.auth"])
    log_in user
    redirect_to user
  end
end

1 个答案:

答案 0 :(得分:3)

试试这个,发生错误的原因是您使用elsifunless这是不正确的,您只能使用else除非。

def create
  user = User.from_omniauth(env["omniauth.auth"])      
  unless user.present?
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      log_in user
      redirect_to user
      # Log the user in and redirect to the user's show page.
    else
      # Create an error message.
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end    
  else        
    log_in user
    redirect_to user
  end
end

希望有所帮助!