Commit f57206c1 by Tô Ngọc Ánh

Fix bug index industry page, refactor code

parent 148f59aa
Pipeline #783 canceled with stages
in 0 seconds
class IndustriesController < ApplicationController class IndustriesController < ApplicationController
def index def index
@industries = Industry.all @industries = Industry.with_count_job
end end
end end
class LocationsController < ApplicationController class LocationsController < ApplicationController
def index def index
@vn_cities_lists = Location.vietnam.count_job @vn_cities_lists = Location.vietnam.with_count_job
@internal_cities_lists = Location.international.count_job @internal_cities_lists = Location.international.with_count_job
end end
end end
class Industry < ApplicationRecord class Industry < ApplicationRecord
scope :count_job, -> { joins(:jobs).group(:industry_id).select('industries.*, count(jobs.id) as job_count') } scope :with_count_job, -> { joins(:jobs).group(:industry_id).select('industries.*, count(jobs.id) as job_count') }
scope :top_industries, ->(number) { count_job.order(Arel.sql('count(jobs.id) DESC')).limit(number) } scope :top_industries, ->(number) { with_count_job.order(Arel.sql('job_count DESC')).limit(number) }
has_and_belongs_to_many :jobs has_and_belongs_to_many :jobs
end end
class Location < ApplicationRecord class Location < ApplicationRecord
scope :count_job, -> { joins(:jobs).group(:location_id).select('locations.*, count(jobs.id) as job_count') } scope :with_count_job, -> { joins(:jobs).group(:location_id).select('locations.*, count(jobs.id) as job_count') }
scope :top_locations, ->(number) { count_job.order(Arel.sql('job_count DESC')).limit(number) } scope :top_locations, ->(number) { with_count_job.order(Arel.sql('job_count DESC')).limit(number) }
scope :international, -> { where(oversea: true) } scope :international, -> { where(oversea: true) }
scope :vietnam, -> { where(oversea: false) } scope :vietnam, -> { where(oversea: false) }
CITY_VIETNAM_NUMBER = 70 CITY_VIETNAM_NUMBER = 70
has_many :locations_jobs has_many :locations_jobs
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<h1>Top Cities</h1> <h1>Top Cities</h1>
<hr> <hr>
<div class='row'> <div class='row'>
<%= render partial: 'locations/city', collection: @top_cities, as: :location %> <%= render partial: 'locations/location', collection: @top_cities %>
</div> </div>
<%= link_to 'All Citites', cities_path %> <%= link_to 'All Citites', cities_path %>
</div> </div>
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<h1>Top Industries</h1> <h1>Top Industries</h1>
<hr> <hr>
<div class='row'> <div class='row'>
<%= render partial: 'industries/industry', collection: @top_industries, as: :industry %> <%= render partial: 'industries/industry', collection: @top_industries %>
</div> </div>
<%= link_to 'All Industries', industries_path %> <%= link_to 'All Industries', industries_path %>
</div> </div>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class='card'> <div class='card'>
<%= link_to '#', class: 'card-body text-decoration-none' do %> <%= link_to '#', class: 'card-body text-decoration-none' do %>
<h5 class='card-title font-weight-bold'><%= industry.name %></h5> <h5 class='card-title font-weight-bold'><%= industry.name %></h5>
<p class='card-text'><%= industry.job_count %> Jobs</p> <p class='card-text'><%= pluralize(industry.job_count, 'Job') %></p>
<% end %> <% end %>
</div> </div>
</div> </div>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class='card'> <div class='card'>
<%= link_to '#', class: 'card-body text-decoration-none' do %> <%= link_to '#', class: 'card-body text-decoration-none' do %>
<h5 class='card-title font-weight-bold'><%= location.city %></h5> <h5 class='card-title font-weight-bold'><%= location.city %></h5>
<p class='card-text'><%= location.job_count %> Jobs</p> <p class='card-text'><%= pluralize(location.job_count, 'Job') %></p>
<% end %> <% end %>
</div> </div>
</div> </div>
\ No newline at end of file
<div class='list my-3 text-center'> <div class='list my-3 text-center'>
<h2>Area List</h2> <h2>Area List</h2>
<hr> <hr>
<ul class='list-group list-group-horizontal'> <ul class='list-group list-group-horizontal justify-content-center'>
<li class='list-group-item'> <li class='list-group-item'>
<a href='#vietnam'>Việt Nam</a> <a href='#vietnam'>Việt Nam</a>
<span class='badge badge-primary badge-pill'><%= @vn_cities_lists.length %></span>
</li> </li>
<li class='list-group-item'> <li class='list-group-item'>
<a href='#international'>International</a> <a href='#international'>International</a>
<span class='badge badge-primary badge-pill'><%= @internal_cities_lists.length %></span>
</li> </li>
</ul> </ul>
</div> </div>
...@@ -16,13 +14,13 @@ ...@@ -16,13 +14,13 @@
<h2>Vietnam</h2> <h2>Vietnam</h2>
<hr> <hr>
<div class='row'> <div class='row'>
<%= render partial: 'locations/city', collection: @vn_cities_lists, as: :location %> <%= render partial: 'locations/location', collection: @vn_cities_lists %>
</div> </div>
</div> </div>
<div id='international' class='text-center'> <div id='international' class='text-center'>
<h2>International</h2> <h2>International</h2>
<hr> <hr>
<div class="row"> <div class="row">
<%= render partial: 'locations/city', collection: @internal_cities_lists, as: :location %> <%= render partial: 'locations/location', collection: @internal_cities_lists %>
</div> </div>
</div> </div>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment