【发布时间】:2011-09-26 22:30:11
【问题描述】:
我想要一个读取 HAML 文件并从中创建静态 html 文件的 rake 任务。这样做的原因是我想以这里http://devcorner.mynewsdesk.com/2010/01/13/rails-i18n-and-404500-error-pages/
描述的方式动态本地化我的错误页面这是错误页面的编写方法。
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 助手,但也不知道这对我有什么帮助。
【问题讨论】:
标签: ruby-on-rails ruby internationalization rake haml