我有一个基本的CMS,并且我在其中大量使用了交叉控制器渲染。
class Index < E
map '/'
# some actions
def ad
@steroids = render_p('anabolic-steroids/ads/left-banner')
# some logic
end
endSteroids类:
class Steroids < E
map 'anabolic-steroids'
# actions
end查看文件夹:
view/
|
- anabolic-steroids/
|
- ads/
|
- left-banner.erb
# other templates一切运行正常,但现在客户希望将anabolic-steroids URL重命名为steroids
为此,我重新映射了Steroids类:
map :steroids并将view/anabolic-steroids/文件夹重命名为view/steroids/。
并且Steroids控制器可以很好地处理新的网址。
但现在所有其他渲染类固醇广告的控制器都坏了:(
我必须找到所有使用它的地方并重新命名
render_p('anabolic-steroids/ads/left-banner')至
render_p('steroids/ads/left-banner')奇怪!
我还在其他很多地方使用了像这样的跨控制器渲染。
当这种无害的重命名请求来自客户时,有什么方法可以避免无用的重构呢?
发布于 2012-11-26 04:05:22
对一个微不足道的问题有相当长的描述:) (开玩笑,抱歉,问得好)
解决方案很简单,真的很简单--永远不会在你可以使用其他东西的地方使用字符串...
似乎你在文档中遗漏了这一点--“要呈现一个内部控制器的模板,将控制器作为第一个参数传递,模板作为第二个参数传递。”
请参阅official docs here
因此,为了避免任何重命名问题,请使用跨控制器渲染,如下所示:
render_p(Steroids, 'ads/left-banner')现在您不应该担心“无害的重命名请求”:)
https://stackoverflow.com/questions/13554755
复制相似问题