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调用.
把include SessionsHelper你的控制器包括控制器模块的方法,让他们在你的控制器方法访问.您希望视图中提供辅助方法,因此需要helper SessionsHelper在应用程序控制器中使用.
话虽如此,我同意Jits的说法,你在SessionsHelper中拥有的方法确实属于控制器而不是助手.