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

Ruby on rails 尝试在一个方法中为同一变量定义两个不同的值。轨道,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图为会话控制器中的一个变量定义两个不同的值。我得到了“语法错误,意外关键字\u elsif,期望关键字\u end”和“语法错误,输入意外结束,期望关键字\u end”。很明显,elsif或我的语法有问题。我想知道我做错了什么,或者有人告诉我一种不同的方法 def create unless user = User.from_omniauth(env["omniauth.auth"]) user = User.find_by(email: params[:session][:ema

我试图为会话控制器中的一个变量定义两个不同的值。我得到了“语法错误,意外关键字\u elsif,期望关键字\u end”和“语法错误,输入意外结束,期望关键字\u 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

尝试此操作,出现错误的原因是您将
elsif
除非一起使用,这是不正确的,您只能将
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

希望有帮助

试过这个,结果还是一样的。你的权利。谢谢你的帮助。我必须了解它是如何工作的。出现错误的原因是您使用了
elsif
excel
这是不正确的,您只能使用
else
和excel,编辑了我的答案和解释。啊,好的。我不明白语法为什么它不作为user.present?询问用户是否在我认为已经在的地方?