在rails中的head-element内写字符串

时间:2012-03-12 12:30:46

标签: ruby ruby-on-rails-3

我正在通过knockout.js使用客户端模板与网站合作。

后端api和登录名是用rails编写的。

我想要做的是将每个客户端html模板放在一个单独的文件中,然后使用模板将这些模板提升到页面中。类似于javascript文件的提升方式。

所以我的app / assets中有一个名为templates的目录 应将目录中的每个模板添加到脚本标记中的页面,类型为“text / html”

我现在已经开始生成实际的模板内容了,我只想把它放在head属性的html.erb文件中。 但是它总是作为普通文本登陆Body,而不是HTML。

我在控制器中定义了以下方法:

  def html_templates
    output = ''
    templates = Dir.glob 'app/assets/templates/*'
    templates.each { |template| 
      file = File.open(template, "rb")
      output += '<script type="text/html" id="'+(File.basename template, '.html')+'">'
      output += file.read
      output += '</script>'

    }
    return output

  end

我尝试将它添加到.erb布局文件中,如下所示:

<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <%= html_templates %>
    <%= stylesheet_link_tag    "application" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
</head>

然而输出总是放在身体里,我的所有html都被逃脱了。

此外,如果有人有更好的解决方案必须解决这个问题。请推荐。

1 个答案:

答案 0 :(得分:1)

谢谢:)所以基本上你应该使用raw方法,只要你不希望输出被转义