我正在使用stache进行Mustache模板的服务器端评估。我想使用ICanHaz.js在JavaScript的客户端重新使用其中一些模板,但为此我需要将它们包含在脚本标记中。我想避免重复模板(DRY),但显然,模板必须不在被发送到客户端之前进行评估,因此使用简单的render :partial
调用(如此)(HAML) )片段不工作:
%script{:id => 'project_snippet'}
= render :partial => 'project'
有没有办法在不使用底层模板引擎评估部分的情况下包含部分(有点像原始包含)?
在其他地方,部分将被用作常规部分,即应该进行评估,因此更改文件扩展名以始终避免评估不是一种选择。
答案 0 :(得分:0)
您是否需要部分原样,或者您希望将其呈现为带有一些JavaScript占位符的HTML模板?您可以将:locals => { ... }
传递给稍后由JS模板引擎替换的内容,即
%script{:id => 'project_snippet'}
= render :partial => 'project', :locals => {:name => '{{{ project_name }}}'}
如果原样,则读取部分内容(但看起来不像你想要的那样)
%script{:id => 'project_snippet'}
= File.open("#{path/to}/partial.html.haml", "r").read
答案 1 :(得分:0)
好吧,似乎我应该阅读stache文档:有一个标签助手可用,所以
= template_include_tag 'projects/project'
在初始化程序中设置模板基目录后,将执行此操作:
Stache.configure do |c|
c.template_base_path = "#{Rails.root}/app/views"
end