我有一个基本的CMS,我非常在其中使用跨控制器渲染。
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
网址
要重命名为steroids
为了完成这项工作,我重新映射了Steroids
class:
map :steroids
并将view/anabolic-steroids/
文件夹重命名为view/steroids/
。
Steroids
控制器适用于新网址。
但现在所有其他呈现类固醇广告的控制器都被破坏了:(
我必须找到使用它的所有地方并重命名
render_p('anabolic-steroids/ads/left-banner')
到
render_p('steroids/ads/left-banner')
奇!
我还有其他许多地方,我正在使用像这样的跨控制器渲染。
任何避免无用重构的方法 当无辜的重命名请求来自客户时?
答案 0 :(得分:2)
对于一个微不足道的问题有很长的描述:)(开玩笑,抱歉,好问题)
解决方案很简单,非常简单 - 永远不会使用字符串,你可以使用别的东西......
似乎你在文档上错过了这个 - “要渲染内部控制器的模板,将控制器作为第一个参数传递,将模板作为第二个参数传递。”
为了解决任何重命名问题,请使用这样的跨控制器渲染:
render_p(Steroids, 'ads/left-banner')
现在你不应该担心“无辜的重命名请求”:)