Rails:注意错误

时间:2014-07-02 04:33:54

标签: ruby-on-rails notice

在尝试遵循教程时,我在测试"退出"时出现了错误。链接。我检查了与导师的区别,但我无法弄清楚为什么我不能按照自己的方式去做,以及为什么错误发生在这个地方。

我的代码:

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 ...... ...   ^

1 个答案:

答案 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}"