【问题标题】:Adding a conditional block in ERB在 ERB 中添加条件块
【发布时间】:2016-02-05 19:55:53
【问题描述】:

我的 ERB 布局中有以下内容:

<%# Check for block -%>
<% if content_for?(:layoutBlock) %>
    <%# If so, yield to it -%>
    <%= yield :layoutBlock %>
<%# Otherwise... -%>
<% else %>
    <%# Do stuff -%>
<% end %>

本质上是检查视图是否有 layoutBlock 的内容,如果有则让它运行,否则它将执行它自己的 layoutBlock 内容。

有没有办法定义一些别名来简化这个:

<% optionalYield :layoutBlock %>
    <%# Do stuff -%>
<% end %>

【问题讨论】:

    标签: ruby ruby-on-rails-3 erb


    【解决方案1】:

    我希望像这样的助手会起作用

    # in a helper
    def optional_block(block_name, &block)
      concat(content_for(block_name).presence || capture(&block))
    end
    

    在视图中可以这样使用:

    <% optional_block(:layoutBlock) %>
      # Content that is only rendered when content_for(:layoutBlock) is blank
    <% end %>
    

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多