2016-11-28 72 views
0

我有检查索引针对每个值建立一个面包屑一个循环,该数据被传递给渲染使用每个金属块作为阵列中一个单独的散列。目前我收到很多“+”不是方法错误,但我不知道如何说线是为了看起来苗条。该行的目的是循环浏览面包屑数组,重复添加面包屑的段落到前面的一个,以及之前创建一个可用的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 
+0

初始化'url'为空字符串。眼下,'url'是'nil',你不能叫'+ =''一个对象nil'上 –

+0

它是安全的假设您正在使用Rails?如果是这样,Slim基本上是对Rails快捷键友好的。如果是这种情况,请使用link_to。它会更具可读性。 example: '= link_to“它是如何工作的”,how_it_works_path,标题:'whatever'class:'whatever'' – borbesaur

回答

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

它总是更好地与String#<<就地更新的字符串,而不是产生临时的中间字符串对象的量与String#+

+0

这工作正常,我猜这个问题就像Arun上面说的那样,url被设置为零,我无法致电+ =。谢谢您的帮助! – user3062123

+0

这有'url || ='''在追加东西之前默认它是一个空字符串。 – tadman