gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:13 25 4
gpt4 key购买 nike

我在存储在/lib 目录中的用户定义库中定义了一个名为 is_logged_in? 的函数,但是当我尝试在我的一个 View 中使用它时(在本例中为 _menu.html .erb View )我得到一个“未定义的方法‘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

我的_menu.html.erb文件如下:

<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>

谁能指出我哪里做错了?

伯纳德

最佳答案

编辑您的 ApplicationController:

class ApplicationController < ActionController::Base
include 'login_system'
end

关于Ruby on Rails - 从 app/views/layouts/_menu.rhtml 访问/lib/login_system.rb 中用户定义的库函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3161570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com