ran*_*its 7 javascript ruby ruby-on-rails erb angularjs
我正在关注http://minhajuddin.com/2013/04/28/angularjs-templates-and-rails-with-eager-loading上的主题,以便热切地加载HAML模板.看起来这是确保Angular在初始加载时需要缓存的所有HTML部分的合理方法,以避免不必要的往返服务器.我的问题是,如果我们不使用HAML,如何使用常规erb/HTML模板做同样的事情?在这个特定的行:
$templateCache.put("<%= File.basename(f).gsub(/\.haml$/, '') %>", <%= Haml::Engine.new(File.read(f)).render.to_json %>);
<% end %>
Run Code Online (Sandbox Code Playgroud)
Haml::Engine.new对于erb模板,人们需要任何替代品.有没有解决方案,所以我可以实现上面的非基于Haml的模板?
使用HAML的原始代码是:
<% Dir.glob(Rails.root.join('app','assets','templates', '*.haml')).each do |f| %>
$templateCache.put("<%= File.basename(f).gsub(/\.haml$/, '') %>", <%= Haml::Engine.new(File.read(f)).render.to_json %>);
<% end %>
Run Code Online (Sandbox Code Playgroud)
要选择所有ERB模板,请使用
Dir.glob(Rails.root.join('app', 'assets', 'templates', '*.erb'))
# => ['a.erb', 'b.erb', ...]
Run Code Online (Sandbox Code Playgroud)
要从文件名中获取模板名称,请使用
File.basename(f, '.erb')
Run Code Online (Sandbox Code Playgroud)
要呈现ERB模板,请使用
ERB.new(File.read(f)).result
Run Code Online (Sandbox Code Playgroud)
把所有东西放在一起,我们得到
<% Dir.glob(Rails.root.join('app','assets','templates', '*.erb')).each do |f| %>
$templateCache.put("<%= File.basename(f, '.erb') %>", <%= ERB.new(File.read(f)).result.to_json %>);
<% end %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1164 次 |
| 最近记录: |