#前提
- Ruby 2.6.3
- Rails 5.2.4.4
- devise導入済(しなくてもいい)
- 基本的なページは完成している
- コントローラー名は今回gears
- gearモデルにはcategoryカラムが存在する
- 今回はログインユーザーにしか見えない投稿一覧なので、他ユーザーも閲覧できるようにしたい場合は
user_id: @user.id
を省いてください。
#やり方
###Controller
編集前
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
###View
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メソッドを使えば簡単に特定カラムでまとめられる!