0

我在 Product 模型中有 notes 属性,文本为“something, something else”。在我想看到的视图中:

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

我也有工作代码,但我想用装饰器(draper)重构或者使用助手。

%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>

怎么了?

4

1 回答 1

1

你的 notes_list 正在返回product.notes.split(/,/)

尝试

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
于 2012-03-22T11:42:00.633 回答