[Rails] 소식 목록을 카테고리별로 표시하는 방법

7655 단어 루비Railsdevise

전제


  • Ruby 2.6.3
  • Rails 5.2.4.4
  • devise 도입 완료 (하지 않아도 좋다)
  • 기본 페이지는 완성되어 있다
  • 컨트롤러 이름은 이번 gears
  • gear 모델에는 카테고리 열이 있습니다.
  • 이번은 로그인 유저에게만 보이는 투고 일람이므로, 다른 유저도 열람할 수 있도록(듯이) 하고 싶은 경우는 user_id: @user.id 를 생략해 주세요.

  • 방법



    컨트롤러



    편집 전

    gears_controller.rb
     def index
       @user = current_user
       @gear = Gear.where(user_id: @user.id)
     end
    

    편집 후

    gears_controller.rb
      def index
        @user = current_user
        @gear1 = Gear.where(user_id: @user.id, category: "住居系")
        @gear2 = Gear.where(user_id: @user.id, category: "料理系")
        @gear3 = Gear.where(user_id: @user.id, category: "火周り系")
        @gear4 = Gear.where(user_id: @user.id, category: "その他")
      end
    

    보기



    index.html.erb
    <div class="category bg-success">住居系</div>
      <% @gear1.each do |gear| %>
        <div class="gear-index-item mb-20">
          <% if gear.image.attached? %>
            <%= image_tag gear.image, class: "index-img" %>
          <% else %>
            <img class="index-img" src="<%= "/images/default_gear.jpg" %>" alt="Index image cap">
          <% end %>
          <%= link_to(gear.name, "/gears/#{gear.id}") %>
        </div>
      <% end %>
    
      <div class="category bg-warning">料理系</div>
      <% @gear2.each do |gear| %>
        <div class="gear-index-item mb-20">
          <% if gear.image.attached? %>
            <%= image_tag gear.image, class: "index-img" %>
          <% else %>
            <img class="index-img" src="<%= "/images/default_gear.jpg" %>" alt="Index image cap">
          <% end %>
          <%= link_to(gear.name, "/gears/#{gear.id}") %>
        </div>
      <% end %>
       .
       .
       .
    

    각각 each 문으로 반복 처리를 행한다.

    결과





    요약



    where 메소드를 사용하면 간단하게 특정 컬럼으로 정리할 수 있다!

    좋은 웹페이지 즐겨찾기