首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Espresso Framework -一致的跨控制器渲染?

Espresso Framework -一致的跨控制器渲染?
EN

Stack Overflow用户
提问于 2012-11-26 03:45:00
回答 1查看 241关注 0票数 2

我有一个基本的CMS,并且我在其中大量使用了交叉控制器渲染。

代码语言:javascript
复制
class Index < E
  map '/'

  # some actions

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

Steroids类:

代码语言:javascript
复制
class Steroids < E
  map 'anabolic-steroids'

  # actions
end

查看文件夹:

代码语言:javascript
复制
view/
  |
  - anabolic-steroids/
      |
      - ads/
          |
          - left-banner.erb
  # other templates

一切运行正常,但现在客户希望将anabolic-steroids URL重命名为steroids

为此,我重新映射了Steroids类:

代码语言:javascript
复制
map :steroids

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

并且Steroids控制器可以很好地处理新的网址。

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

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

代码语言:javascript
复制
render_p('anabolic-steroids/ads/left-banner')

代码语言:javascript
复制
render_p('steroids/ads/left-banner')

奇怪!

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-26 04:05:22

对一个微不足道的问题有相当长的描述:) (开玩笑,抱歉,问得好)

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

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

请参阅official docs here

因此,为了避免任何重命名问题,请使用跨控制器渲染,如下所示:

代码语言:javascript
复制
render_p(Steroids, 'ads/left-banner')

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13554755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档