Rails class_names 메소드 소개
class_names
모듈에서 ActionView::Helpers::TagHelper
라는 메서드입니다. 이 편리한 새 보기 도우미는 Vue.js에서 Rails로 가장 좋아하는 기능 중 하나를 제공합니다.Vue.js(또는 클래스 이름 라이브러리를 통한 React)에서 다음과 같이 할 수 있습니다.
<div class="{item: true, item__complete: item.complete, item__over_due: !item.complete && item.overDue }">
{{ item.name }}
</div>
적절한 CSS 클래스와 항목 개체가 있다고 가정하면 다음과 같이 표시됩니다.
<!-- item.complete == false -->
<div class="item">Incomplete Item</div>
<!-- item.complete == false && item.overDue == true -->
<div class="item item__over_due">Incomplete Item</div>
<!-- item.complete == true && item.overDue == true -->
<div class="item item__complete">Complete Item</div>
분명히 이것은 지나치게 단순화된 예이지만 아이디어를 얻을 수 있습니다. Rails에서 동일한 작업을 수행하려면 다음과 같은 것이 필요합니다.
<%= tag.div class: "item #{item.completed? ? 'item__complete' : ''} #{!item.completed? && item.over_due? ? 'item__over_due' : ''}" do %>
<%= item.name %>
<% end %>
그러나
class_names
를 도입하면 이를 단순화하고 Vue와 매우 유사하게 작동합니다. 이제 다음과 같이 할 수 있습니다.<%= tag.div class: class_names(item: true, item__complete: item.completed?, item__over_due: !item.completed? && item.over_due?) do %>
<%= item.name %>
<% end %>
또한
class_names
는 혼합 인수 유형을 사용할 수 있으므로 위의 작업을 다음과 같이 수행할 수도 있습니다.<%= tag.div class: class_names("item", { item__complete: item.completed?, item__over_due: !item.completed? && item.over_due? }) do %>
<%= item.name %>
<% end %>
참고: 위의 예는 설명을 위해 명시적으로
class_names
를 호출합니다. tag
(및 content_tag
) 메서드는 이미 후드 아래에서 class_names
를 사용하므로 위의 작업은 실제로 다음과 같이 수행할 수 있습니다.<%= tag.div class: ["item", { item__complete: item.completed?, item__over_due: !item.completed? && item.over_due? }] do %>
<%= item.name %>
<% end %>
저는 이것을 매우 좋아하며 Rails에서 더 복잡한 조건부 CSS 클래스 목록을 훨씬 쉽고 깔끔하게 만들 수 있습니다.
class_names
는 token list
의 별칭이며 해당 문서here를 볼 수 있습니다.
Reference
이 문제에 관하여(Rails class_names 메소드 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/drbragg/introducing-the-rails-classnames-method-2bdm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)