Parsing a 'template' in rails (alternatives to gsub)
我的CMS Rails应用程序中有一个"模板"系统。基本上,整个HTML模板都存储在数据库列中,并且字符串中具有键代码(如
我使用实际布局来渲染模板。布局中的所有内容是:
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约定。
杰米