gpt4 book ai didi

ruby-on-rails - 在哪里放置自定义类以使其对 Rails 应用程序全局可用?

转载 作者:数据小太阳 更新时间:2023-10-29 06:29:09 26 4
gpt4 key购买 nike

我有一个类,我想在我的 Controller 中的索引操作中使用它。

为了简化它,它看起来像这样

class PagesController < ApplicationController
def index
@front_page = FrontPage.new
end
end

FrontPage 是我定义的类。为了包含它,我将它放在/lib/文件夹中。我尝试过require 'FrontPage'require 'FrontPage.rb'require 'front_page',以及每个具有路径的前置,例如 require_relative '../../lib/FrontPage.rb'

我不断收到以下消息之一:无法加载此类文件 --/Users/josh/src/ruby/rails/HNReader/lib/front_page
未初始化常量 PagesController::FrontPage

我应该把这个文件放在哪里/我如何将它包含到一个 Controller 中以便我可以实例化一个对象?

这是 Rails 3.1.3、Ruby 1.9.2、OS X Lion

最佳答案

如果您将 front_page.rb 放置在您的加载路径中的某处,您应该能够使用 require 'front_page'。即:这应该工作:

require 'front_page'
class PagesController < ApplicationController
def index
@front_page = FrontPage.new
end
end

要检查你的加载路径,试试这个:

$ rails console
ree-1.8.7-2011.03 :001 > puts $:
/Users/scottwb/src/my_app/lib
/Users/scottwb/src/my_app/vendor
/Users/scottwb/src/my_app/app/controllers
/Users/scottwb/src/my_app/app/helpers
/Users/scottwb/src/my_app/app/mailers
/Users/scottwb/src/my_app/app/models
/Users/scottwb/src/my_app/app/stylesheets
# ...truncated...

你可以在这个例子中看到,第一行是项目的 lib 目录,也就是你说的 front_page.rb 所在的目录。

您可以做的另一件事是在您的 config/application.rb 中添加:

config.autoload_paths += %W(#{config.root}/lib)

这应该可以让您甚至不需要require;相反,Rails 会自动加载它(以及 lib 目录中的所有其他内容,所以要小心)。

关于ruby-on-rails - 在哪里放置自定义类以使其对 Rails 应用程序全局可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9338473/

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