2012-11-25 20 views
2

我有一個基本的內容管理系統,我非常使用內部的交叉控制器渲染。Espresso框架 - 一致的交叉控制器渲染?

class Index < E 
    map '/' 

    # some actions 

    def ad 
    @steroids = render_p('anabolic-steroids/ads/left-banner') 
    # some logic 
    end 
end 

Steroids類:

class Steroids < E 
    map 'anabolic-steroids' 

    # actions 
end 

查看文件夾:

view/ 
    | 
    - anabolic-steroids/ 
     | 
     - ads/ 
      | 
      - left-banner.erb 
    # other templates 

一切運作良好,但現在客戶希望anabolic-steroids URL 被重命名爲steroids

爲了使這工作我重新映射PED Steroids類:

map :steroids 

,並更名view/anabolic-steroids/文件夾view/steroids/

Steroids控制器可以很好地處理新的URL。

但現在被渲染類固醇廣告中的所有其他控制器被打破:(

,我必須找到它使用的所有地方,並重新命名

render_p('anabolic-steroids/ads/left-banner') 

render_p('steroids/ads/left-banner') 

奇怪!

我也有很多地方我使用交叉控制像這樣渲染。

任何避免無用重構的方法 這種無辜的重命名請求來自客戶嗎?

回答

2

相當長說明一個稍微小問題:)(開玩笑,對不起,好問題雖然)

解決方法很簡單,很簡單 - 從未使用字符串,您可以用別的東西...

似乎你錯過了這個文檔 - 「要呈現內部控制器的模板,請將控制器作爲第一個參數,將模板作爲第二個參數。」

official docs here

所以生存的任何重命名問題,使用跨控制器渲染這樣的:

render_p(Steroids, 'ads/left-banner') 

現在,你不應該擔心「無辜更名請求」 :)

+0

真的錯過那謝謝你,像一個魅力一樣工作! –