Ruby / 超薄连接

Ruby / Slim concatenation

我有一个循环检查每个值的索引以构建面包屑,使用每个 slug 作为数组中的单独哈希将此数据传递到渲染器。目前我收到很多“+”不是方法错误,但我不知道所说的行看起来很苗条。该行的目的是遍历面包屑数组,将面包屑的 slug 重复添加到前一个面包屑上,并在前面加上斜线以创建可用的 url。有谁知道正确的显示方式吗?

代码:

.c-fg
  ol.crumb
    - properties[:breadcrumbs].each_with_index do |breadcrumb, index|
      - url += "/" + breadcrumb[:slug]
      li
        a[href="#{url}" title="#"]
          = breadcrumb[:place]

错误信息:

undefined method `+' for nil:NilClass
.c-fg
  ol.crumb
    - properties[:breadcrumbs].each_with_index do |breadcrumb, index|
      - (url ||= '') << "/" << breadcrumb[:slug]
      li
        a[href="#{url}" title="#"]
          = breadcrumb[:place]

最好用 String#<< rather than produce an amount of temporary intermediate string objects with String#+ 就地更新字符串。