2

我有一个基本的 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将 URL 重命名为steroids

为了完成这项工作,我重新映射了Steroids课程:

map :steroids

并将view/anabolic-steroids/文件夹重命名为view/steroids/.

Steroids控制器适用于新 URL 。

但是现在所有其他渲染类固醇广告的控制器都坏了:(

我必须找到所有使用它的地方并重命名

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

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

奇怪的!

我还有其他很多地方我正在使用这样的跨控制器渲染。

当这种无辜的重命名请求来自客户时,有什么方法可以避免无用的重构?

4

1 回答 1

2

对一个微不足道的问题进行了相当长的描述:)(开玩笑,抱歉,不过是个好问题)

解决方案很简单,真的很简单——永远不要在可以使用其他东西的地方使用字符串......

似乎您在文档中错过了这一点- “要呈现内部控制器的模板,请将控制器作为第一个参数传递,将模板作为第二个参数传递。”

在此处查看官方文档

因此,为了解决任何重命名问题,请使用这样的跨控制器渲染:

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

现在你不应该担心“无辜的重命名请求”:)

于 2012-11-25T20:05:22.150 回答