Ruby on Rails:使用模块

时间:2015-04-30 01:34:09

标签: ruby-on-rails ruby module

我对Ruby on Rails比较陌生,但我差不多完成了Lynda的在线课程。我被困在14-5“使用positionMove模块”。本教程在Rails 3中,而我的版本是Rails 4.我有解决方案代码,但它对我不起作用。我把我的文件position_mover.rb放在lib目录中。然后在我的主题模型中,我需要并包含这样的模块:

require 'lib/position_mover'
class Subject < ActiveRecord::Base

  include PositionMover
  ...
end

我在Subject控制器中使用了此模型中的方法,就像教师一样。但是,当我在Subjects索引页面上运行我的应用程序时,我收到错误:

cannot load such file -- lib/position_mover

app/models/page.rb:1:in `<top (required)>'
app/views/subjects/list.html.erb:23:in `block in_app_views_subjects_list_html_erb__420960863_60005508'
app/views/subjects/list.html.erb:18:in `_app_views_subjects_list_html_erb__420960863_60005508'
app/controllers/subjects_controller.rb:9:in `index'

我尝试了许多在线发现的不同方法,例如将其添加到类定义(Ruby on Rails 4.0 - Loading and using a module)或将其移动到不同的目录并指定路径。如何在Rails 4中实现相同的结果?我究竟做错了什么?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

require "#{Rails.root}/lib/position_mover" 

require_relative 'lib/position_mover'

您也可以自动加载lib文件。

config/application.rb中的

config.autoload_paths << Rails.root.join('lib')