我希望有一个耙子任务,可以读取HAML文件并将其创建为静态html文件。这样做的原因是我想以动态方式本地化我的错误页面,具体方法在这里描述:http://devcorner.mynewsdesk.com/2010/01/13/rails-i18n-and-404500-error-pages/
以下是编写错误页面的方法。
问题在于Haml::Engine没有可用的Rails方法。因此,当我尝试读取haml文件时,文件中每个Rails方法都会出现错误(我想使用诸如image_tag、form_for和I18n.translate之类的方法)。
我注意到这里有一个已解决的类似问题:Rails HAML engine rendering。
然而,当我尝试上述链接中提到的解决方案时,我会得到以下错误:"undefined local variable or method `config' for #”。
我该如何使Rails方法在Haml::Engine中正常工作,以便我可以读取HAML文件?我还尝试过切换到ERB,但是发现它会导致相同的问题,至少有人在这里部分解决了这个问题:render erb from database into view problem please help! 但这个解决方案对我也没用。
我也愿意尝试除了使用Haml::Engine之外的其他解决方案。我研究了capture_haml帮助程序,但不知道它怎么能帮我。
def write_error_page(status, locale = nil)
dest_filename = [status.to_s, locale, "html"].compact.join(".")
File.open(File.join(Rails.root, "public", dest_filename), "w") do |file|
path = File.join(Rails.root, "app", "views", "errors", "#{status}.haml")
file.print Haml::Engine.new(File.read(path)).render
end
end
问题在于Haml::Engine没有可用的Rails方法。因此,当我尝试读取haml文件时,文件中每个Rails方法都会出现错误(我想使用诸如image_tag、form_for和I18n.translate之类的方法)。
我注意到这里有一个已解决的类似问题:Rails HAML engine rendering。
然而,当我尝试上述链接中提到的解决方案时,我会得到以下错误:"undefined local variable or method `config' for #”。
我该如何使Rails方法在Haml::Engine中正常工作,以便我可以读取HAML文件?我还尝试过切换到ERB,但是发现它会导致相同的问题,至少有人在这里部分解决了这个问题:render erb from database into view problem please help! 但这个解决方案对我也没用。
我也愿意尝试除了使用Haml::Engine之外的其他解决方案。我研究了capture_haml帮助程序,但不知道它怎么能帮我。