0

我需要创建一些 html 文件并希望使用我已经完成的部分显示视图。我以前用 markaby 做这个,但现在我认为用 haml 事情会更容易。我正在尝试做:

Haml::Engine.new(File.read("#{Rails.root}/app/views/metric_box_sets/_metric_box_set.html.haml"), 
:format => :html5, :ugly => true).render(Object.new,locals =>{:metric_box_set=>@metric_box_set})

在我正在使用的部分中,我多次访问 metric_box_set,但也渲染其他部分并为它们提供与此相关的其他对象。问题是它在渲染方法上出错。有什么方法可以告诉它应该使用的渲染方法是正常的渲染方法吗?

天呐!

4

2 回答 2

0

我找到了其他解决方案来做到这一点。代替使用 Haml::Engine,一旦我们已经在 rails 中并且我们可以使用渲染本身,我在模型中创建了一个 to_html 函数并包含应用程序助手来获取我在部分中使用的 helper_methods。然后使用渲染将结果打印到文件中:

def to_html
  ActionView::Base.send :include, ActionView::Helpers::ApplicationHelper

  File.open(File.join(Rails.root, "public", 'test.html'), "w") do |file|

    file.print ActionView::Base.new(Rails.configuration.paths["app/views"].first).render(
                :partial => 'metric_box_sets/metric_box_set', 
                :format => :html,
                :locals => { :metric_box_set => self}
              )
  end  
end

这样我就可以根据我已经完成的视图生成我需要的所有 html 片段。

于 2013-05-07T12:03:24.767 回答
-1

你有一个错字 -locals =>应该是locals =

于 2017-10-10T00:28:31.313 回答