2017-08-02 118 views
0

關於Rails的範圍的路由,該guides狀態:Rails的範圍:模塊文件路徑

如果您要路由/條(不帶前綴/管理員)到 管理:: ArticlesController,你可以使用:

,然後提供下面的例子:

scope module: 'admin' do 
    resources :articles, :comments 
end 

到目前爲止,除了一個小細節那麼好:我注意到, ArticlesController也需要去/admin。換言之,針對範圍界定工作,我需要做2件不同的事情:

  1. 放置ArticlesController一個名爲Admin模塊中,並把它轉化爲這樣:Admin::ArticlesController
  2. Admin::ArticlesControllerapp/controllers改爲app/controllers/admin

我在想這裏的第二種情況。爲什麼我們必須將文章控制器移動到admin文件夾下才能使用?我們是否將ArticlesController放置在模塊下是不夠的?

+0

看到這個問題剛問https://開頭stackoverflow.com/questions/45453660/do-i-need-to-create-folder-hierarchy-for-nested-module-class-in-rails。答案基本相同 –

+0

我還是很困惑... – kstratis

回答

0

在本博客post中發現了一個很好的解釋。

它基本上總結了這樣:

空載Foo::Bar::Baz引用不變。 Ruby無法解決它,並調用Foo::Bar.const_missing("Baz")。軌則:

  1. 如果找到一個匹配的文件autoload_paths中看起來對foo/bar/baz.rb
  2. ,它被推測裝載:

    • 如果正確的常量定義,則返回
    • 否則,錯誤提出
  3. 如果找不到匹配的文件,它看起來不是爲Foo::Baz,然後Baz,除非他們已經被定義

  4. 如果沒有候選人常量可以加載,它提出了一個NameError