关于布局:在rails中解析” \\ template \\”(gsub的替代方案)

Parsing a 'template' in rails (alternatives to gsub)

我的CMS Rails应用程序中有一个"模板"系统。基本上,整个HTML模板都存储在数据库列中,并且字符串中具有键代码(如<!--THEME_Body-->),该键代码已由应用程序生成的内容替换。

我使用实际布局来渲染模板。布局中的所有内容是:

1
<%= generate_theme.gsub!('<!--THEME_Body-->', yield) -%>

该助手采用正确的主题,并进一步扩展了其他区域,例如元数据和面包屑。

我只是想知道是否有更好的方法来解决这个问题?也许使用content_for或类似的东西?


这是一个很好的解决方法,尽管我将利用Ruby的性感语法将所有行组合成语法上更正确的东西-它加快了脚本的速度,看上去也真是太好了!铅>

1
2
3
4
5
6
7
tags = {
    '<!--THEME_Body-->' => yield,
    '<!--THEME_Head-->' => yield(:head),
    '<!--STYLESHEET-->' => stylesheet_link_tag('application')
}

tags.each { |str, rep| generate_theme.gsub!(str, rep) }

请记住,此代码不应放在视图中-理想情况下,应将其放在模型中,因为它与应用程序的数据有关,但也可以放在某个地方的帮助程序中。如果它是模型中的实例变量,则可以调用

1
generate_theme.parse

并且该代码可以执行-它看起来好很多,并遵循尽可能多地清理视图的标准MVC约定。

杰米