看代码,有点迷惑,不知道 haml 是怎么生成菜单的?是什么时候生成的?访问某个 controller 的某个方法时候,这个 controller 里面的 helper 的方法加载了吗?是什么时候加载 helper 里面的方法的?
rails 启动后加载 routes,访问的时候,routes 会找到对应的 controller,c 会 render 一个 view。 至于 M 和 helper,你让它在该出现的时候出现。
#4 楼 @zhangyanan 是的。你完全可以写一个错的东西放进去,rails 也不知道。直到 controller render 这个 view 的时候。。。。
#6 楼 @zhangyanan 不可能呀。
默认是 erb 引擎,这是 ruby 自己的 stdlib, http://ruby-doc.org/stdlib-1.9.3/libdoc/erb/rdoc/index.html, 就算没有 Rails,erb 照样可以用。
那么,你不告诉 Rails 用 haml 的 Engine,那么,它就用 erb 喽。
如何在 rails 中用 haml??
gem "haml-rails"
它的核心在这里
if ::Rails.version.to_s >= "3.1"
config.app_generators.template_engine :haml
else
config.generators.template_engine :haml
end
会不会有个疑问,为什么不是 gem 'haml'
因为,haml 这种 gem 是不依赖谁的,你完全可以自己用 haml 做点简单的页面。比如
haml.rb
require 'haml'
engine = Haml::Engine.new("%p Haml code!")
engine.render #=> "<p>Haml code!</p>\n"
然后 ruby haml.rb