帮助程序类无法从视图访问

gee*_*ter 7 session ruby-on-rails helper session-cookies ruby-on-rails-3

我定义了一个helper类,如下所示

module SessionsHelper

  def current_user 
        @current_user= User.find_by_fbid(session[:fbid])
  end


  def sign_in(user)
        session[:fbid] = user.fbid
        @current_user = user

  end


  def signed_in?
       !current_user.nil?
  end


  end  
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序控制器中包含了Helper类

class ApplicationController < ActionController::Base
  protect_from_forgery
  include SessionsHelper


end
Run Code Online (Sandbox Code Playgroud)

登录方法从会话控制器调用

class SessionsController < ApplicationController


  def create

  user = User.find_or_create_by_fbid(params[:user][:fbid]) 
  user.update_attributes(params[:user])
  sign_in(user)
  redirect_to user_path(user)

  end

end
Run Code Online (Sandbox Code Playgroud)

但是我无法从用户#show view访问'current_user'变量.

 <% if signed_in? %>
<p>
  <b>Current User:</b>
  <%= current_user.name %>
</p>


<% end %>
Run Code Online (Sandbox Code Playgroud)

它说:nil的未定义方法`name':NilClass

任何人都可以建议吗?方法current_user根本没有从index调用.

Jer*_*ers 8

include SessionsHelper你的控制器包括控制器模块的方法,让他们在你的控制器方法访问.您希望视图中提供辅助方法,因此需要helper SessionsHelper在应用程序控制器中使用.

话虽如此,我同意Jits的说法,你在SessionsHelper中拥有的方法确实属于控制器而不是助手.