2009-12-22 61 views
2

我在命名空間中有一個控制器,並希望緩存它的索引。我成功緩存了不在名稱空間下的頁面,併成功緩存了片段。Rails Caches_Page因命名空間而錯位

當我訪問http //.../ house/kitchen時,它成功創建/public/house/kitchen.html。但它從來沒有找到它,所以它總是在緩存文件上寫。

我一直無法找到cache_page或caches_page的選項來幫助我將緩存的文件指向正確的位置。

另一件令人沮喪的事情是http //.../ house/kitchen/table成功讀取並創建/public/houose/kitchen/table/new.html。

我會非常感謝任何方向!

編輯:添加細節
紅寶石:1.8.7
的Rails:2.3.5
服務器:雜種

編輯:我已經放在kitchen.html在每一個可能的位置在我公共文件夾,這個控制器似乎只是拒絕閱讀它。

回答

0

我的建議是不使用命名空間,任何你想做的關於URL的事情都可以通過路由完成。有沒有必要使用名稱空間控制器的原因?

+0

不幸的是,我沒有擁有該應用程序。一旦我將我的頭靠在牆上足夠長的時間,並且可以證明刪除命名空間可以解決問題,那麼這是一種可能性。 – Travis 2009-12-22 18:24:32

0

我不確定它是否相關,但我發現前段時間有一個issue帶有goldspike web服務器。
所以也許你的網絡服務器也缺少一些東西(順便說一句,你使用的是什麼Web服務器)?

+0

目前正在使用雜種。我不相信這是相關的,因爲雜種是成功地通過片段和頁面瀏覽來實現的,而這些頁面瀏覽並不是命名空間。 – Travis 2009-12-22 21:55:08

+0

看到http://github.com/rails/rails/blob/master/actionpack/lib/action_controller/caching/pages.rb 看不到明顯的原因,但你可以試試看,也許你會找點東西。 也許這與網絡服務器本身有關... – 2009-12-23 00:47:28

0

我想我有同樣的問題。如果是這樣,我知道原因,但還沒有找到解決辦法。

Web服務器在找到文件http://…/house/kitchen.html之前找到目錄http://…/house/kitchen/。該目錄不包含index.html,所以它將路由傳遞給Rails,它會生成一個新文件。

所以,你可以:

  1. 將您的文件緩存在http://…/house/kitchen/index.html

  2. 告訴你的Web服務器,尋找*.html文件,它看起來*/目錄之前。