在Ruby on Rails中包含部分“原样”

时间:2011-11-29 01:21:40

标签: ruby-on-rails ruby-on-rails-3

我正在使用stache进行Mustache模板的服务器端评估。我想使用ICanHaz.js在JavaScript的客户端重新使用其中一些模板,但为此我需要将它们包含在脚本标记中。我想避免重复模板(DRY),但显然,模板必须在被发送到客户端之前进行评估,因此使用简单的render :partial调用(如此)(HAML) )片段工作:

%script{:id => 'project_snippet'}
  = render :partial => 'project'

有没有办法在不使用底层模板引擎评估部分的情况下包含部分(有点像原始包含)?

在其他地方,部分将被用作常规部分,即应该进行评估,因此更改文件扩展名以始终避免评估不是一种选择。

2 个答案:

答案 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