блоки в представлениях и рефакторинг в рельсах - PullRequest
0 голосов
/ 22 марта 2012

У меня есть атрибут заметки в модели продукта с текстом «что-то, что-то еще».В представлениях, которые я хотел видеть:

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

Также у меня есть рабочий код, но я хочу рефакторинг с декоратором (draper) или, возможно, использую помощники.

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>

Что не так?

1 Ответ

1 голос
/ 22 марта 2012

ваш список заметок возвращается 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
...