RubyonRails-从app/views/layouts/_menu.rhtml访问/lib/login_system.rb中的用户定义的lib函数
我在存储在/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_
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