【问题标题】:stuck with haml templates坚持使用haml模板
【发布时间】:2011-10-11 19:12:08
【问题描述】:

我想将一些haml(*.html.haml 文件)转换成xhtml。 haml 命令显示“用法:haml [options] [INPUT] [OUTPUT]”。所以我尝试了以下响应:

Exception on line 1: undefined method `content_for' for #<Object:0xb730af2c>

我注意到有不同的格式都称为haml。我注意到一个经常使用尖括号的。我需要某种预处理吗?

这是我要转换的示例 html.haml 文件:

- content_for :head do
  = stylesheet_link_tag    'jquery.autocomplete'
  = javascript_include_tag 'jquery.autocomplete'
- javascript_behaviour '$("input#user_full_name").autocomplete("project_roles/auto_complete_for_user_full_name")'

注意:我知道如何 google,所以我正在寻找具体的建议。

【问题讨论】:

  • 你需要在 Rails 环境中运行它才能使用 Rails 助手,而且看起来它也需要使用布局来呈现。
  • 为什么不添加这个作为答案?
  • 你说的是“rails 控制台”还是“rails runner”?我将如何在这种情况下调用 haml 以便它执行 haml 文件?
  • 刚刚注意到您需要 XHTML。由于很多原因(其中一些原因请参阅hixie.ch/advocacy/xhtml),这是一个坏主意。尽可能使用 HTML 4 或 5。

标签: ruby-on-rails ruby xhtml haml


【解决方案1】:

您正在使用 rails 帮助器 content_for,因此当您使用命令行程序调用 haml 时,它不知道它代表什么。 因此,要么将 haml gem 添加到您的 gemfile 并将模板保存在 .html.haml 模板中并尝试渲染它,要么将 content_for 替换为 rails 生成的 html 结果。

【讨论】:

  • 谢谢大家 我决定手动翻译 haml 文件。这是很多工作,但这样我就不需要了解整个 Rails 堆栈。
  • 不,事实上,您确实需要了解整个 Rails 堆栈才能翻译 Rails 辅助方法。只需使用rails runner 或其他东西并做对。更好的是,如果可以,请保留 Haml。
【解决方案2】:

您想要将 Haml 转换为 Erb - 看起来像 HTML 的 Ruby 模板语言。 Haml 不这样做,因此它尝试将您的 haml 模板渲染为 xhtml,而不是将其转换为另一个模板。

您可以使用haml2erb gem 进行转换。它会是这样的:

Dir["**/*.haml"].each do |filename|
  File.open(filename.gsub(/haml$/, 'erb'),'w') do |f|
    f.puts Haml2Erb.convert( File.read(filename) )
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 2011-02-17
    • 1970-01-01
    相关资源
    最近更新 更多