2016-11-28 6 views
0

各値に対してインデックスをチェックしてブレッドクラムを作成するループがあります。このデータは、各スラッグを配列内の別々のハッシュとしてレンダリングに渡します。現在、私は多くの "+"メソッドエラーではありませんが、私はどのようにラインがスリムに見えるように意図されているのか分かりません。この行の目的は、ブレッドクラム配列をループし、ブレッドクラムのスラッグを前のものに繰り返し追加し、使用可能なURLを作成する前にスラッシュを繰り返すことです。誰もがこれを表示する正しい方法を知っていますか?Ruby/Slim concatenation

コード:

.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を使用してください。より読みやすくなります。 例: '= link_to" How it Works "、how_it_works_path、title: '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が上記のように問題はなかったと思います。私は+ =それを呼び出すことができませんでした。助けてくれてありがとう! – user3062123

+0

これには 'url || = '''があります。これは、物事を追加する前に空の文字列にデフォルト設定します。 – tadman

関連する問題