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

时间:2014-12-10 09:36:40

标签: ruby-on-rails templates haml

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

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

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

optional_content_for :scripts do
  :javascript
    {my javascript}

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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}