在尝试遵循教程时,我在测试"退出"时出现了错误。链接。我检查了与导师的区别,但我无法弄清楚为什么我不能按照自己的方式去做,以及为什么错误发生在这个地方。
我的代码:
class SessionsController < ApplicationController
def create
if user = User.authenticate(params[:email], params[:password])
session[:user_id] = user.id
redirect_to(session[:intended_url] || user), notice:"Welcome back, #{user.name}"
session[:intended_url] = nil
else
flash.now[:alert] = "Invalid email/password combination! you are a failure"
render :new
end
end
def destroy
session[:user_id] = nil
redirect_to root_url, notice: "You're now signed out!"
end
end
更正码:
class SessionsController < ApplicationController
def new
end
def create
if user = User.authenticate(params[:email], params[:password])
session[:user_id] = user.id
flash[:notice] = "Welcome back, #{user.name}!"
redirect_to(session[:intended_url] || user)
session[:intended_url] = nil
else
flash.now[:alert] = "Invalid email/password combination!"
render :new
end
end
def destroy
session[:user_id] = nil
redirect_to root_url, notice: "You're now signed out!"
end
end
引发的错误:
SessionsController#destroy中的SyntaxError
C:/Users/xcpro/ve2/2B3/app/controllers/sessions_controller.rb:6: 语法错误,意外&#39;,&#39;,期待keyword_end ...... ession [:intention_url] ||用户),注意:&#34;欢迎回来,#{user ...... ... ^
答案 0 :(得分:2)
问题是方法redirect_to
仅在括号中使用参数,但是notice
也应该传递给它。在所有redirect_to
参数周围添加括号:
redirect_to( (session[:intended_url] || user), notice: "Welcome back, #{user.name}" )
或redirect_to
之后的空格也可以起作用:
redirect_to (session[:intended_url] || user), notice: "Welcome back, #{user.name}"