【问题标题】:How to require a class file in Rails 3 /lib directory from another class in /lib如何从 /lib 中的另一个类中获取 Rails 3 /lib 目录中的类文件
【发布时间】:2011-08-07 23:11:02
【问题描述】:

我是 Ruby 和 Rails 的新手,无法让 /lib 中的类引用 /lib 中的另一个类。

我的 application.rb 文件中有这个,据我了解 Rails 3 不会自动加载 lib 目录:

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

然后我有 lib/Rec.rb

class Rec
  Movie @movie
...

然后是 lib/Movie.rb。我可以在控制器中实例化一个 Movie 对象,但在 Rec 中引用会产生:

undefined method `Movie' for Rec:Class
...
lib/rec.rb:2:in `<class:Rec>'
lib/rec.rb:1:in `<top (required)>'

【问题讨论】:

    标签: ruby ruby-on-rails-3


    【解决方案1】:

    您的代码......搞砸了。 Movie @movie 是什么意思?你到底想做什么?

    除非您在某处将Movie 声明为方法,否则这段代码是无效的Ruby。但电影应该是一门课,对吧?这就是 Rails 没有加载您的 movie.rb 文件的第一个原因,因为 Ruby 对您的代码含义感到困惑。

    也许你的意思是

    @movie = Movie.new
    

    类似的东西应该自动加载你的movie.rb,因为现在代码有意义了。

    但是..

    Movie @movie
    

    ..没有任何意义..

    【讨论】:

    • 您的评估是正确的,我的语法导致了问题。正如我所提到的,我是 Ruby 新手,这个问题是由于我习惯于在静态类型语言中指定类型。
    猜你喜欢
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2011-07-08
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多