Ruby on rails 在rails中使用lib目录中的class函数
我正在创建一个rails3应用程序,我想创建一个处理字符串格式的类,所以我在lib目录中创建了一个名为FormatUtilites.rb的类,但每当我尝试在我的应用程序中的其他地方调用它时,我都会遇到以下错误:Ruby on rails 在rails中使用lib目录中的class函数,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在创建一个rails3应用程序,我想创建一个处理字符串格式的类,所以我在lib目录中创建了一个名为FormatUtilites.rb的类,但每当我尝试在我的应用程序中的其他地方调用它时,我都会遇到以下错误: ActionView::Template::Error(未初始化的常量ActionView::CompiledTemplates::FormatUtilities) 所以它认为它是一个常量,而不是一个类方法,这就是它的定义方式。有什么想法吗 class FormatUtilities
ActionView::Template::Error(未初始化的常量ActionView::CompiledTemplates::FormatUtilities)
所以它认为它是一个常量,而不是一个类方法,这就是它的定义方式。有什么想法吗
class FormatUtilities
def self.slugify(name)
name.downcase.gsub(/\s|\W|\D/, "")
end
end
谢谢 类是Ruby中的常量,也是类。可能您只需要执行“require format\u utilities”如果希望rails在引导时自动加载此文件,您需要将文件命名为format\u utilities.rb。下次重新启动服务器或控制台时,应该能够执行格式化实用程序。slugify(“name”)显示rails3停止自动加载lib目录。我不知道他们为什么这么做,但他们做到了。只需要将其添加到application.rb中的自动加载 无论如何谢谢你 您需要添加:
# in config/application.rb
config.autoload_paths = %W(#{config.root}/lib
文件名应为format_utilities.rb,以便自动加载工作
在你的特殊情况下,我会使用不同的方法。我将在app/helpers/formatting_helper.rb中创建一个名为FormattingHelper的模块,而不是使用静态函数创建一个类,如下所示
class FormattingHelper
def slugify(name)
name.downcase.gsub(/\s|\W|\D/, "")
end
end
然后在ApplcationController或特定控制器中,我将添加:
class ApplicationController < ActionController::Base
helper :formatting
end
class ApplicationController
但是lib目录中的文件不应该自动加载吗?根据我的经验,它们似乎不应该自动加载。我不认为它停止了自动加载。只是名称约定规定,FormatUtilities类应该在名为format_utilities.rb的文件中定义,而不是在FormatUtilities.rb中定义