railsでeachで一定の値でグループ化?した情報を出力する方法
rails初心者です。
rails5で勉強中です。
都道府県、駅、路線名が別々もモデルになっておりアソシエーションを組んでおります。
#########モデル#########
#pref.rb(都道府県)
class Pref < ApplicationRecord
has_many :stations
end
#station.rb(駅名)
class Station < ApplicationRecord
belongs_to :pref
belongs_to :line, foreign_key: 'line_id', primary_key: 'line_id'
end
#line.rb(路線名)
class Line < ApplicationRecord
has_many :stations, class_name: 'Station', foreign_key: 'line_id', primary_key: 'line_id'
end
#########コントローラー#########
#stations_controller.rb
class StationsController < ApplicationController
def index
@pref_name = Station.find_by(pref_id: params[:area_id])
@stations = Station.where(pref_id: params[:area_id])
end
def show
end
end
#########ビュー#########
#stations/index.html.erb
<div class="container">
<div class="row">
<div class="col-md-12">
<h1><%= @pref_name.pref.name %>|<%= @stations.count %>駅|Stations#index</h1>
<p>Find me in app/views/stations/index.html.erb</p>
<% @stations.each do |station| %>
<div class="panel panel-default">
<div class="panel-heading"><%= station.line.line_name %></div>
<ul class="list-group">
<li class="list-group-item"><%= station.station_name %></li>
</ul>
</div>
<% end %>
</div>
</div>
</div>
DBはmysqlで
prefsテーブル
id:integer
pref_cd:integer
name:string
stationsテーブル
id:integer
pref_id:integer
station_cd:integer
station_name:string
line_id:integer
linesテーブル
id:integer
line_id:integer
line_name:string
現状は下記のような表示になってしまっています。
【山手線】
大崎
【山手線】
五反田
【山手線】
目黒
上記のようになっているのを…
【山手線】
大崎
五反田
目黒
山手線の駅が全部出力されると…
【南武線】
矢野口
稲城長沼
南多摩
と言った具合に路線でグルーピング?して出力したいです。
各駅が持っているline_id(線路のID)をグループ化してどうにかしてeachで回せないかと考えていますが答えがでません。
どのように処理すれば解決しますでしょうか???
ぜひともご教授お願い致します!!!