Rails의 content_tag
도우미를 사용하여 HTML 코드 블록을 작성합니다. 현재 직면 한 문제는 배열의 HTML 문자열에 content_tag
에 의해 생성 된 HTML 요소를 결합하는 것입니다.safe_join 및 content_tag 접근 방식으로 html_safe 대체
RuboCop Rails/OutputSafety 참조. 예를 들어
: 나는 다음과 같은 html_safe 접근 방식을 사용하는 경우
options = ["<li>Three</li>", "<li>Four</li>", "<li>Five</li>"]
# This is code to generate blocks of HTML
out = []
out << content_tag(:ul,
content_tag(:li, "One") +
content_tag(:li, "Two") +
options.join(''),
:class => ["class_1", "class_2"])
safe_join(out)
# Expect result should be like
<ul class="class_1 class_2">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
</ul>
# Actual result
<ul class="class_1 class_2">
<li>One</li>
<li>Two</li>
"<li>Three</li><li>Four</li><li>Five</li>"
</ul>
그러나, 그것은 작동합니다.
내가 바꿔야 할 것에 대한 제안 사항이 있으십니까?
# New apporach
options = ["Three", "Four", "Five"]
out = []
out << content_tag(:ul,
content_tag(:li, "One") +
content_tag(:li, "Two") +
options.collect do |option|
content_tag(:li, "#{option[0]}")
end.join(""),
:class => ["class_1", "class_2"])
safe_join(out)
# New approach result
<ul class="class_1 class_2">
<li>One</li>
<li>Two</li>
"<li>Three</li><li>Four</li><li>Five</li>"
</ul>
합니다. 완전하고 기술적 인 해결책에 대한 답을보십시오. – zihaow