在 ERB 中添加条件块
Adding a conditional block in ERB
我的 ERB 布局中有以下内容:
<%# Check for block -%>
<% if content_for?(:layoutBlock) %>
<%# If so, yield to it -%>
<%= yield :layoutBlock %>
<%# Otherwise... -%>
<% else %>
<%# Do stuff -%>
<% end %>
本质上是检查视图是否包含 layoutBlock
的内容,如果是,则让它 运行,否则它将执行自己的 layoutBlock
.[=14 的内容=]
有没有办法定义一些别名,将其简化为:
<% optionalYield :layoutBlock %>
<%# Do stuff -%>
<% end %>
我希望像这样的助手能工作
# 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 %>
我的 ERB 布局中有以下内容:
<%# Check for block -%>
<% if content_for?(:layoutBlock) %>
<%# If so, yield to it -%>
<%= yield :layoutBlock %>
<%# Otherwise... -%>
<% else %>
<%# Do stuff -%>
<% end %>
本质上是检查视图是否包含 layoutBlock
的内容,如果是,则让它 运行,否则它将执行自己的 layoutBlock
.[=14 的内容=]
有没有办法定义一些别名,将其简化为:
<% optionalYield :layoutBlock %>
<%# Do stuff -%>
<% end %>
我希望像这样的助手能工作
# 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 %>