RubyonRails-从app/views/layouts/_menu.rhtml访问/lib/login_system.rb中的用户定义的lib函数

RubyonRails-从app/views/layouts/_menu.rhtml访问/lib/login_system.rb中的用户定义的lib函数,ruby,methods,undefined,ruby-on-rails,Ruby,Methods,Undefined,Ruby On Rails,我在存储在/lib目录中的用户定义库中定义了一个名为is_logged_?的函数,但是当我尝试在我的一个视图(在本例中是_menu.html.erb视图)中使用它时,我得到了一个针对#的“undefined method`is_logged__in?”错误。我假设如果该方法在/lib目录中可用,那么它将可以通过应用程序访问 我的login_system.rb文件如下: module LoginSystem protected def is_logged_in? @logged_

我在存储在/lib目录中的用户定义库中定义了一个名为
is_logged_?
的函数,但是当我尝试在我的一个视图(在本例中是_menu.html.erb视图)中使用它时,我得到了一个针对#的“undefined method`is_logged__in?”错误。我假设如果该方法在/lib目录中可用,那么它将可以通过应用程序访问

我的login_system.rb文件如下:

module LoginSystem
  protected

  def is_logged_in?
    @logged_in_user = User.find(session[:user]) if session[:user]
  end

  def logged_in_user
    return @logged_in_user if is_logged_in?
  end

  def logged_in_user=(user)
    if !user.nil?
      session[:user] = user.id
      @logged_in_user = user
    end
  end

  def self.included(base)
    base.send :helper_method, :is_logged_in, :logged_in_user
  end
end
<ul>
 <li><%= link_to 'Home', '/' %></li>
 <li><%= link_to 'Edit Page', pages_path %></li>

 <li><hr size = "1" width = "90%" aligh = "left" /></li>

 <% if is_logged_in? %>
  <li> Logged in as: <i><%= logged_in_user.username%> </i></li>
  <li><%= link_to 'Logout',{:controller => 'account', :action => 'logout'}, :method => :post%> </li>
 <% else %>
  <li><%= link_to 'Signup', :controller => 'users', :action => 'new' %> </li>
  <li><%= link_to 'Login', :controller => 'account', :action => 'login' %></li>
 <% end %>
</ul>
my_menu.html.erb文件如下:

module LoginSystem
  protected

  def is_logged_in?
    @logged_in_user = User.find(session[:user]) if session[:user]
  end

  def logged_in_user
    return @logged_in_user if is_logged_in?
  end

  def logged_in_user=(user)
    if !user.nil?
      session[:user] = user.id
      @logged_in_user = user
    end
  end

  def self.included(base)
    base.send :helper_method, :is_logged_in, :logged_in_user
  end
end
<ul>
 <li><%= link_to 'Home', '/' %></li>
 <li><%= link_to 'Edit Page', pages_path %></li>

 <li><hr size = "1" width = "90%" aligh = "left" /></li>

 <% if is_logged_in? %>
  <li> Logged in as: <i><%= logged_in_user.username%> </i></li>
  <li><%= link_to 'Logout',{:controller => 'account', :action => 'logout'}, :method => :post%> </li>
 <% else %>
  <li><%= link_to 'Signup', :controller => 'users', :action => 'new' %> </li>
  <li><%= link_to 'Login', :controller => 'account', :action => 'login' %></li>
 <% end %>
</ul>

  • 以以下身份登录:
  • '帐户',:操作=>'logout'},:方法=>:post%>
  • '用户',:操作=>'新''>
  • '帐户',:操作=>'登录'%>
有人能指出我哪里出了错吗


Bernard

编辑您的应用程序控制器:

class ApplicationController < ActionController::Base
  include 'login_system'
end
class ApplicationController
您可能也想试试。
如果您对登录/注销帐户没有严重不同的需求,那就太好了

我的应用程序控制器已经有了。class ApplicationController