2017-03-08 131 views
0

我不能爲我的生活得到consern加載我正在建立的應用程序。我使用這個用於帶有數據表的服務器端處理。Conserns in Rails 5 are not loading

爲了防萬一,我正在包括模塊的結構,在那裏我有一個通用模塊,其中包含通用模塊的專用模塊定義的一堆東西。目的是在不同表中使用不同類型數據的專用類中的定義,而不必重複一堆代碼。

  • 我檢查了另一個 後文中提到的文件的大小寫。
  • 我已經嘗試過在模塊內部使用和不使用「擴展 ActiveSupport :: Concern」。
  • 我試過更改模塊名稱,以防 與其他東西衝突。
  • 我試過在前面添加「::」 的其他帖子。

我還沒有算到了

錯誤:

ActionController::RoutingError (uninitialized constant MetatasksController::MetatasksDatatableModule): 

app/controllers/metatasks_controller.rb:2:in `<class:MetatasksController>' 
app/controllers/metatasks_controller.rb:1:in `<top (required)>' 

我控制器(/app/controllers/metatasks_controller.rb)具有這樣的:

class MetatasksController < ApplicationController 
    include MetatasksDatatableModule 
    [...] 
end 

consern(/app/controllers/concerns/metatask_datatables_consern.rb)有:

module MetatasksDatatableModule 
    extend ActiveSupport::Concern 
    class MetatasksDatatable 
    include DatatableModule 
    [...] 
    end 
end 

廣義數據表模塊(/app/controllers/concerns/datatables_module.rb)具有這樣的:

module DatatableModule 
    included do 
    [...] 
    end 
end 

我的自動加載路徑包括的文件夾(編輯的關聯性/隱私):

> rails r 'puts ActiveSupport::Dependencies.autoload_paths' 
[...] 
/home/<user>/sites/<appname>/app/controllers/concerns 
[...] 

回答

1

Rails很可能無法自動加載,因爲文件名與模塊名稱不匹配,所以它不知道從哪裏加載它們。

所以metatask_datatables_consern.rb應該叫metatasks_datatable_module.rbdatatables_module.rbdatatable_module.rb

+0

這個固定,太感謝你了!我拉着我的頭髮出來了幾個小時,並大聲地叫了起來:「你想從我那裏得到什麼?!」在我的電腦上,所以它非常尷尬,這是很簡單的事情。 –