我在Decorator类中使用了很多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 ~ end
阻止。
有没有更好的方法来编写这些代码?
答案 0 :(得分: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