Commit d1bf2e45 by Tô Ngọc Ánh

Merge branch 'master' of gitlab.zigexn.vn:anhtn/VeNJob

parents 3e240ad2 e2407a16
...@@ -25,4 +25,9 @@ ...@@ -25,4 +25,9 @@
height: 50px; height: 50px;
background-color: $main-color; background-color: $main-color;
} }
hr {
width: 100px;
border-top: 2px solid $main-color
}
\ No newline at end of file
class HomeController < ApplicationController class HomeController < ApplicationController
def index def index
@total_jobs = Job.count @total_jobs = Job.count
@locations = Location.all @locations = Location.select(:id, :city)
@industries = Industry.all @industries = Industry.select(:id, :name)
@jobs = Job.order(created_at: :desc).limit(Job::NUMBER_LATEST_JOB) @jobs = Job.includes(:company, :locations).order(created_at: :desc).limit(Job::NUMBER_LATEST_JOB)
@top_cities = Location.top_locations(9) @top_cities = Location.top_locations(9)
@top_industries = Industry.top_industries(9) @top_industries = Industry.top_industries(9)
end end
......
class IndustriesController < ApplicationController
def index
@industries = Industry.with_count_job
end
end
class LocationsController < ApplicationController
def index
@vn_cities_lists = Location.vietnam.with_count_job
@internal_cities_lists = Location.international.with_count_job
end
end
class Industry < ApplicationRecord class Industry < ApplicationRecord
scope :top_industries, ->(number) { joins(:jobs) scope :with_count_job, -> { joins(:jobs).group(:industry_id).select('industries.*, count(jobs.id) as job_count') }
.group(:industry_id) scope :top_industries, ->(number) { with_count_job.order(Arel.sql('job_count DESC')).limit(number) }
.order(Arel.sql('count(jobs.id) DESC'))
.take(number) }
has_and_belongs_to_many :jobs has_and_belongs_to_many :jobs
end end
class Location < ApplicationRecord class Location < ApplicationRecord
scope :top_locations, ->(number) { joins(:jobs) scope :with_count_job, -> { joins(:jobs).group(:location_id).select('locations.*, count(jobs.id) as job_count') }
.group(:location_id) scope :top_locations, ->(number) { with_count_job.order(Arel.sql('job_count DESC')).limit(number) }
.order(Arel.sql('count(jobs.id) DESC')) scope :international, -> { where(oversea: true) }
.take(number) } scope :vietnam, -> { where(oversea: false) }
CITY_VIETNAM_NUMBER = 70 CITY_VIETNAM_NUMBER = 70
......
...@@ -8,22 +8,24 @@ ...@@ -8,22 +8,24 @@
</div> </div>
<div id='latest-jobs' class='my-4 text-center'> <div id='latest-jobs' class='my-4 text-center'>
<h1>Latest Jobs</h1> <h1>Latest Jobs</h1>
<hr>
<div class='row'> <div class='row'>
<%= render partial: 'home/job', collection: @jobs %> <%= render partial: 'home/job', collection: @jobs %>
</div> </div>
<a href='#'>All Jobs</a>
</div> </div>
<div id='top-cities' class='my-4 text-center'> <div id='top-cities' class='my-4 text-center'>
<h1>Top Cities</h1> <h1>Top Cities</h1>
<hr>
<div class='row'> <div class='row'>
<%= render partial: 'home/city', collection: @top_cities, as: :location %> <%= render partial: 'locations/location', collection: @top_cities %>
</div> </div>
<a href='#'>All Cities</a> <%= link_to 'All Citites', cities_path %>
</div> </div>
<div id='top-industries' class='my-4 text-center'> <div id='top-industries' class='my-4 text-center'>
<h1>Top Industries</h1> <h1>Top Industries</h1>
<hr>
<div class='row'> <div class='row'>
<%= render partial: 'home/industry', collection: @top_industries, as: :industry %> <%= render partial: 'industries/industry', collection: @top_industries %>
</div> </div>
<a href='#'>All Industries</a> <%= 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.jobs.size %> Jobs</p> <p class='card-text'><%= pluralize(industry.job_count, 'Job') %></p>
<% end %> <% end %>
</div> </div>
</div> </div>
<div id='industries' class='text-center my-3'>
<h2>Industries List</h2>
<hr>
<div class='row'>
<%= render partial: 'industries/industry', collection: @industries %>
</div>
</div>
\ No newline at end of file
...@@ -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.jobs.size %> Jobs</p> <p class='card-text'><%= pluralize(location.job_count, 'Job') %></p>
<% end %> <% end %>
</div> </div>
</div> </div>
<div class='list my-3 text-center'>
<h2>Area List</h2>
<hr>
<ul class='list-group list-group-horizontal justify-content-center'>
<li class='list-group-item'>
<a href='#vietnam'>Việt Nam</a>
</li>
<li class='list-group-item'>
<a href='#international'>International</a>
</li>
</ul>
</div>
<div id='vietnam' class='text-center'>
<h2>Vietnam</h2>
<hr>
<div class='row'>
<%= render partial: 'locations/location', collection: @vn_cities_lists %>
</div>
</div>
<div id='international' class='text-center'>
<h2>International</h2>
<hr>
<div class="row">
<%= render partial: 'locations/location', collection: @internal_cities_lists %>
</div>
</div>
<nav class='navbar navbar-expand-lg navbar-light sticky-top'> <nav class='navbar navbar-expand-lg navbar-light sticky-top'>
<a class='navbar-brand' href='#'> <%= link_to root_path, class: 'navbar-brand' do %>
<%= image_tag 'venjob-logo.png', alt: 'VeNJob', size: '120x50' %> <%= image_tag 'venjob-logo.png', alt: 'VeNJob', size: '120x50' %>
</a> <% end %>
<button class='navbar-toggler' type='button' data-toggle='collapse' data-target='#navbarSupportedContent' aria-controls='navbarSupportedContent' aria-expanded='false' aria-label='Toggle navigation'> <button class='navbar-toggler' type='button' data-toggle='collapse' data-target='#navbarSupportedContent' aria-controls='navbarSupportedContent' aria-expanded='false' aria-label='Toggle navigation'>
<span class='navbar-toggler-icon'></span> <span class='navbar-toggler-icon'></span>
</button> </button>
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
<div class='collapse navbar-collapse' id='navbarSupportedContent'> <div class='collapse navbar-collapse' id='navbarSupportedContent'>
<ul class='navbar-nav ml-auto'> <ul class='navbar-nav ml-auto'>
<li class='nav-item active'> <li class='nav-item active'>
<a class='nav-link text-white' href='#'>Sign in</a> <%= link_to 'Sign in', '#', class: 'nav-link text-white' %>
</li> </li>
<li class='nav-item'> <li class='nav-item'>
<a class='nav-link text-white' href='#'>Sign up</a> <%= link_to 'Sign up', '#', class: 'nav-link text-white' %>
</li> </li>
</ul> </ul>
</div> </div>
......
Rails.application.routes.draw do Rails.application.routes.draw do
root to: 'home#index' root to: 'home#index'
get 'cities', to: 'locations#index'
get 'industries', to: 'industries#index'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end end
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