each 내에서의 render 부분을 collection으로 변경하여 가속화
문제
뷰 내에서 부분 템플릿을 each로 호출할 때 곤란한 일.
예) 루트 (welcome) 화면에서 픽업 한 상품 일람을 표시 (상품 일람은 다른 화면에서도 사용하기 때문에 부분화)
welcome_controller.rb
@pickups = Product.all.where.not(pickup_at: nil).joins_i18n(locale_id: @current_lang.id).includes(countries: :country_i18ns).shuffle
welcome.html.erb
#問題点のみ抜粋
<% @pickups.each do |p| %>
<%= render partial: '/shared/products/index_item', locals: { p: p } %>
<% end %> -->
/shared/products/_index_item.html.erb
<div class="col-xs-6 col-md-3">
<section class="product_list">
<%= link_to product_maker_path(id: p.maker_id, product_id: p.id) do %>
<div class="photo_box">
<div class="photo_inner photo_contain" style="background-image:url(<%= asset_path p.main_image.thumb %>);" >
<% p.campaigns.each do |camp| %>
<div class="cam_lavel"><%= camp.i18n.label %></div>
<% end %>
</div>
</div>
<div class="pdt_list_ex">
#以下省略
each로 돌릴 때마다 부분 파일을 불러 버린다.
로드 속도가 느립니다. . . . .
해결책
each 안이 아닌 collection을 사용하여 부분을 render
welcome.html.erb
<%= render partial: '/shared/products/index_item', collection: @pickups, as: :p %>
부분을 불러내는 것은 1회.
Reference
이 문제에 관하여(each 내에서의 render 부분을 collection으로 변경하여 가속화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shukan0728/items/6f79c28e81e692d10b92텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)