2012-11-25 21 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

真的错过那谢谢你,像一个魅力一样工作! –