Ruby on Rails - 坚持Hartl Book第9.3.3章,未定义方法sign_in

Jam*_*Lin 2 ruby ruby-on-rails

我正在研究Hartl书籍的9.3.3,并继续陷入困境

SessionsController的未定义方法`sign_in':0x00000100c0da90

我知道这是因为sign_in方法位于sessions_helper文件中,该文件由模型而不是控制器拾取.Hartl书不需要"包含SessionsHelper"行.

如果我把那个hack,我假设我不应该这样做,那么它最终会以另一个错误登陆我undefined方法current_user

这是代码

SessionsController.rb

class SessionsController < ApplicationController

  def new
    @title = "Sign in"
  end

  def create
    user = User.authenticate( params[:session][:email],
                              params[:session][:password])
     if user.nil?
       flash.now[:error] = "Invalid email/password combo."
       @title = "Sign in"
       render 'new'
     else
       sign_in user
       redirect_to user
     end 

 end

  def destroy
  end 
Run Code Online (Sandbox Code Playgroud)

以及sessions_helper.rb

  module SessionsHelper

  def sign_in(user)
    cookies.permanent.signed[:remember_token] = [user.id, user.salt]
    self.current_user = user
  end
Run Code Online (Sandbox Code Playgroud)

Jul*_*ler 7

在应用程序控制器中应该有一个"包含SessionsHelper".默认情况下,帮助程序包含在视图中,但为了在控制器中使用帮助程序,需要显式包含它.