我正在尝试为会话控制器中的一个变量定义两个不同的值。我得到"语法错误,意外的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
答案 0 :(得分:3)
试试这个,发生错误的原因是您使用elsif
而unless
这是不正确的,您只能使用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
希望有所帮助!