我正在通过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都被逃脱了。
此外,如果有人有更好的解决方案必须解决这个问题。请推荐。
答案 0 :(得分:1)
谢谢:)所以基本上你应该使用raw
方法,只要你不希望输出被转义