如何更改 Rails 3.0.10 中使用模板引擎的顺序?

问题描述 投票:0回答:2

假设我在同一目录中有视图模板 index.html.erbindex.html.hamlindex.html.slim 。如何配置 Rails 首先使用 slim 模板(如果存在),然后使用 haml 模板,最后使用 erb 模板?

ruby-on-rails haml erb slim-lang
2个回答
1
投票

我认为您需要创建一个 PathResolver,它使用除键顺序之外的其他内容来获取实际文件(FileSystemResolver 是默认值;请参阅 action_view/template/resolver.rb;请参阅 action_view/template/handlers.rb 了解键 -订购我所指的东西)。但这尚未得到证实;抱歉:(

我不确定如何告诉 Rails 使用一个新的实现(假设不仅仅是猴子修补)。使用自定义视图解析器就像在控制器类中调用append_view_path一样简单,但我不确定这是否有意义。


0
投票

我不确定这在旧版 Rails 中是否有效,但在 Rails 7 中,处理程序按照注册顺序排列优先级。您可以重新注册处理程序,使其排在最后。例如将 ERB 移至最后优先级:

ActionView::Template.unregister_template_handler(:erb)
ActionView::Template.register_template_handler(
  :erb, ActionView::Template::Handlers::ERB.new)

对 haml 进行同样的操作:

ActionView::Template.unregister_template_handler(:haml)
ActionView::Template.register_template_handler(
  :haml, Haml::RailsTemplate.new)

更一般地说,如果您在 gem 中搜索

register_template_handler
,那么您可能会找到需要注册的处理程序。

您可以将该代码放入初始值设定项中,或者仅在存在查询字符串时才运行它。

© www.soinside.com 2019 - 2024. All rights reserved.