渴望在Rails for AngularJS中加载HTML/erb模板

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的模板?

Jam*_*Lim 7

使用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)

请参阅#result文档.

把所有东西放在一起,我们得到

<% 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)