2012-03-22 7 views
0

商品のモデルに「何か他のもの」という注釈属性があります。ブロックのビューとリファクタリングでのレール

<div> 
    <span>Something</span> 
    <span>Something else</span> 
</div> 

はまた、私は、コードを働いてきたが、私はデコレータ(ドレイパー)とリファクタリングまたは多分ヘルパーを使いたい:私が見たかった景色で 。デコレータで

%div 
    - product.notes.split(/,/).each do |e| 
    %span= e.strip.capitalize 

:ビューに

def notes_list 
    model.notes.split(/,/).each do |e| 
    h.content_tag(:span, e.strip.capitalize) 
    end 
end 

%div 
    = product.notes_list 

(またはヘルパーアナログ:

def notes_list(product) 
    product.notes.split(/,/).each do |element| 
     content_tag(:span, element.strip.capitalize) 
    end 
    end 

コール:

%div 
    = notes_list(product) 

しかし、これは間違っている

<div> 

" 
         ["something", " something else"] 
          " 
    </div> 

何を返しますか? ` "H" 何である:(スパン、e.strip.capitalize)

+0

' h.content_tagを試してみてくださいproduct.notes.split(/,/)

を返していますか? –

+0

デコレータがhelperメソッドを呼び出す –

答えて

1

あなたnotes_listは

def notes_list(product) 
    result = product.notes.split(/,/).inject([]) do |result, element| 
    result << content_tag(:span, element.strip.mb_chars.capitalize) 
    end 
    result.join("\n") 
end 
+0

未定義のローカル変数またはメソッド 'result' –

+0

が修正されました。インジェクションからの戻り値を割り当てるのを忘れていました。 –

+0

結果:何か何か他のもの。 contant_tagは、配列に、 –

関連する問題