有条件地使用haml中的content_for包装器

我正在尝试找到更干的方法来执行以下操作:

- if request.xhr? :javascript {my javascript} - else = content_for :scripts do :javascript {my javascript} 

我在许多haml文件中重用了这个模式,所以我想知道抽象出条件逻辑的最佳方法是什么。 理想情况下,我想在我的haml文件中实现以下内容:

 optional_content_for :scripts do :javascript {my javascript} 

谢谢!

这似乎解决了我的需要,以防其他人有同样的要求……

 def script_content_for(&block) if request.xhr? capture_haml(&block) else content_for :scripts, nil, &block end end 

使用:

 = script_content_for do :javascript {my js}