【问题标题】:conditional blocks in hamlhaml 中的条件块
【发布时间】:2010-09-20 16:52:41
【问题描述】:

在 ruby​​ 中,您可以像这样执行条件块

block do |n|
  puts n
end if foo == bar

这将转化为 erb 为

<% block do |n| %>
  <%= n %>
<% end if foo == bar %>

除了将块包装在条件中之外,还有其他方法可以在haml中实现吗?

【问题讨论】:

  • 你可以在 Ruby 中做到这一点,但在我和其他许多人看来,你会使用糟糕的风格:请参阅 GitHub's Ruby style guide,它说要避免使用末端链接。跨度>
  • 即使我要说“好吧,do ... end.if 样式是可读的”(它不是),看到它在 Haml 中完成,我感到畏缩。我将在下面的答案中给出一些替代方案。

标签: ruby haml erb


【解决方案1】:
- block do |n|
  = n
- end if foo == bar

Haml 在这种情况下确实允许end

【讨论】:

  • 你同时回答了这个问题,让我的眼睛流血了。拜托,看在 Haml 的份上,不要鼓励这个! :)
【解决方案2】:

请把if放在前面——这样更易读:

- if foo == bar
  - block do |n|
    = n

而且,如果这种情况经常发生,请考虑编写自定义 Haml 帮助器。

(我在评论中提到了上面的GitHub Ruby Style guide。如果你search Google for 'ruby do end chaining',你会看到许多推荐使用该结构的风格指南。)

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2013-03-10
    • 2012-02-24
    • 1970-01-01
    • 2017-09-01
    相关资源
    最近更新 更多