如何让 Haml 与 Rails 一起工作?

Posted

技术标签:

【中文标题】如何让 Haml 与 Rails 一起工作?【英文标题】:How do I get Haml to work with Rails? 【发布时间】:2010-09-11 01:59:44 【问题描述】:

我正在尝试让 Haml 使用我的 Ruby on Rails 项目。我是 Ruby on Rails 的新手,我真的很喜欢它。但是,当我尝试为视图添加 aplication.html.hamlindex.html.haml 时,我只会收到错误消息。

我使用 NetBeans 作为我的 IDE。

【问题讨论】:

有什么错误?你有安装 HAML 插件吗? 【参考方案1】:

首先,通过将它添加到您的Gemfile将haml安装为捆绑器中的 gem:

gem "haml"

运行bundle install,然后确保您的视图以 *.html.haml 扩展名命名。例如:

`-- app
    `-- views
        |-- layouts
        |   `-- application.html.haml
        `-- users
            |-- edit.html.haml
            |-- index.html.haml
            |-- new.html.haml
            `-- show.html.haml

【讨论】:

如果您已经有 erb 模板,请继续将它们重命名为 .html.haml。在文件的顶部,通过将 :erb 放在文件顶部来告诉 haml 使用 erb 过滤器。然后你可以慢慢地转换你的模板。更多关于过滤器的访问。 haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html 为什么以 .html.haml 而不仅仅是 .haml 结尾很重要? mathee,这是 Rails 约定。 name.mime.format(例如 show.html.erb、show.xml.builder、show.html.haml)【参考方案2】:

首先,确保您拥有 HAML gem。

gem list --local | grep haml

如果 haml 没有出现在列表中,则执行以下操作:

sudo gem install haml

然后从您的项目目录中执行此操作:

# cd ../
# haml --rails <yourproject>

这应该会安装您需要的一切,并且 HAML 视图应该停止抱怨并正确解析。

【讨论】:

请注意,对于 Rails 3,haml --rails 不再需要。请参阅我对 Rails 3 howto 的回答。 请避免在安装 gems 时使用sudo【参考方案3】:

在您的 Rails 应用程序中尝试使用 haml 之前,您可以验证命令行可执行文件是否已正确安装:

$ haml
%p 
  %span Hello World!

然后按 CTRL-D 你应该会看到:

<p>
  <span>Hello World!</span>
</p>

【讨论】:

不错...这很整洁。【参考方案4】:

如果由于某种原因您安装了haml,但您的haml 没有启动。试试

sudo ln haml /usr/bin/

在你的 haml gem 的 bin 目录中

由于某种原因,这在我的 ubuntu 9.04 Jaunty 上没有自动发生。

【讨论】:

【参考方案5】:

Haml 与 Rails 3

对于 Rails 3,您只需将 gem "haml", '3.0.25' 添加到您的 Gemfile。无需安装插件或运行haml --rails .

只是:

$ cd awesome-rails-3-app.git $ echo 'gem "haml"' >> Gemfile

你已经完成了。

【讨论】:

添加 echo 'gem "haml-rails", :group => :development' >> Gemfile 以使用 haml 作为默认选项。 还有bundle我猜【参考方案6】:

上面的答案很准确。您只需将gem 'haml' 放入您的Gemfile

另一个未提及的提示:要让 rails 生成器使用 haml 而不是 erb,请将以下内容添加到 config/application.rb

config.generators do |g|
  g.template_engine :haml

  # you can also specify a different test framework or ORM here
  # g.test_framework  :rspec
  # g.orm             :mongoid
end    

【讨论】:

除了编辑application.rb之外,您还可以将gem 'haml-rails'添加到Gemfile中的开发组。这也将照顾发电机。 这相当于config.generators.template_engine :haml,尽管如果你想自定义多个生成器,do 块很好。重申一下,如果你使用gem 'haml-rails',它应该可以解决这个问题,而不需要config/application.rb中的一行代码【参考方案7】:

这可能是一个老问题,但我认为答案是在https://github.com/indirect/haml-rails 使用haml-rails

【讨论】:

【参考方案8】:

将 haml 添加到您的 Gemfile:

gem "haml"

如果您也想使用脚手架功能,请在您的开发组中添加 haml-rails:

gem 'haml-rails', :group => :development

别忘了跑:

$ bundle install

【讨论】:

【参考方案9】:

如果您使用的是Pow,您还需要重新启动它。理想情况下,您使用的是powder(gem install powder),因为这样您就可以在终端上运行它

$ powder restart

【讨论】:

【参考方案10】:

确保将haml gem 添加到您的Gemfile

【讨论】:

以上是关于如何让 Haml 与 Rails 一起工作?的主要内容,如果未能解决你的问题,请参考以下文章

使用 HAML 的 Rails HTTP 流式传输

让 Ruby-on-Rails 6/Webpack + Bootstrap 一起正常工作的问题

如何让 Devise 和 JWT 与我的版本化 API Rails 控制器一起工作?

如何让 XAMPP 的 MySQL 和 Ruby on Rails 在我的 Mac 上协同工作?

缓存的 Ruby Haml 块返回空

如何在 Rails 中使用 npm 包?