如何让 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.haml
或 index.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 一起工作?的主要内容,如果未能解决你的问题,请参考以下文章
让 Ruby-on-Rails 6/Webpack + Bootstrap 一起正常工作的问题
如何让 Devise 和 JWT 与我的版本化 API Rails 控制器一起工作?