0

h.concat在这样的装饰器类中使用了很多:

  def vote_box(size)
    h.content_tag(:div, class: "vote-box #{size}") do
      h.concat(h.link_to(h.up_vote_phrase_path) do
        h.concat h.content_tag(:span, '', class: 'glyphicon glyphicon-triangle-top vote vote-up', :'aria-hidden' => true)
      end)
      h.concat h.content_tag(:div, '0', class: 'vote-count')
      h.concat h.content_tag(:span, '', class: 'glyphicon glyphicon-triangle-bottom vote vote-down', :'aria-hidden' => true)
    end
  end

首先,我觉得它太多了h.concat。其次,我不喜欢paren do ~ endblock。

有没有更好的方法来编写这些代码?

4

1 回答 1

1

看起来您的方法不依赖于 Decorator 类中的任何内容。也许将其移至助手会有意义?然后h更容易访问许多方法。

def vote_box(size)
  content_tag(:div, class: "vote-box #{size}") do
    link_to(up_vote_phrase_path) do
      content_tag(:span, '', class: 'glyphicon glyphicon-triangle-top vote vote-up', :'aria-hidden' => true)
    end +
    content_tag(:div, '0', class: 'vote-count') +
    content_tag(:span, '', class: 'glyphicon glyphicon-triangle-bottom vote vote-down', :'aria-hidden' => true)
  end
end
于 2015-12-31T21:58:32.053 回答