Commit afb60e6e by Tô Ngọc Ánh

create job list

parent d1bf2e45
Pipeline #800 failed with stages
in 0 seconds
......@@ -67,4 +67,5 @@ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
##
gem 'nokogiri'
gem 'whenever', require: false
gem 'kaminari'
##
......@@ -88,6 +88,18 @@ GEM
io-like (0.3.1)
jbuilder (2.10.0)
activesupport (>= 5.0.0)
kaminari (1.2.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.2.1)
kaminari-activerecord (= 1.2.1)
kaminari-core (= 1.2.1)
kaminari-actionview (1.2.1)
actionview
kaminari-core (= 1.2.1)
kaminari-activerecord (1.2.1)
activerecord
kaminari-core (= 1.2.1)
kaminari-core (1.2.1)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
......@@ -204,6 +216,7 @@ DEPENDENCIES
coffee-rails (~> 4.2)
dotenv-rails
jbuilder (~> 2.5)
kaminari
listen (>= 3.0.5, < 3.2)
mysql2 (>= 0.4.4, < 0.6.0)
nokogiri
......
class JobsController < ApplicationController
def city_job
location = Location.find_by_id(params[:id])
results(location)
end
def industry_job
industry = Industry.find_by_id(params[:id])
results(industry)
end
def search
end
private
def results(object)
@keyword = object.try(:name) || object.try(:city)
@jobs = object.jobs.all.page(params[:page]).per(20)
@locations = Location.select(:id, :city)
@industries = Industry.select(:id, :name)
render 'job_list'
end
end
......@@ -3,7 +3,7 @@
<div class='overlay'></div>
<div class='box_seach text-center'>
<h3>We have <%= @total_jobs %> jobs for you</h3>
<%= render 'shared/searchbar' %>
<%= render 'shared/searchbar', my_class: nil %>
</div>
</div>
<div id='latest-jobs' class='my-4 text-center'>
......
<div class='col-4 my-2'>
<div class='card'>
<%= link_to '#', class: 'card-body text-decoration-none' do %>
<%= link_to industry_jobs_path(industry), class: 'card-body text-decoration-none' do %>
<h5 class='card-title font-weight-bold'><%= industry.name %></h5>
<p class='card-text'><%= pluralize(industry.job_count, 'Job') %></p>
<% end %>
......
<div class='card flex-md-row align-items-center my-2'>
<div class='card-body'>
<%= link_to job.title, '#', class: 'card-title font-weight-bold text-decoration-none' %>
<p class='card-text'><%= job.company.name %></p>
<p class='mb-0'>
<strong>Work place:</strong>
<% job.locations.each do |location| %>
<%= location.city %>
<% end %>
<strong>Salary: </strong><%= job.salary %>
</p>
<p class='card-text'><%= strip_tags(job.description).truncate_words(40) %></p>
</div>
<div class='btn-favorite p-2'>
<%= link_to 'Favorite', '#', class: 'btn btn-outline-danger btn-lg' %>
</div>
</div>
<div class='px-5'>
<%= render 'shared/searchbar', my_class: 'd-flex flex-column flex-md-row' %>
</div>
<div>
<div class='message text-center'>
<h3>We found <%= pluralize(@jobs.total_count, 'result') %> for "<%= @keyword %>" </h3>
</div>
<hr>
<div class='content'>
<%= paginate @jobs, window: 3 %>
<%= render partial: 'jobs/job', collection: @jobs %>
<%= paginate @jobs, window: 3 %>
</div>
</div>
<li class="page-item">
<%= link_to_unless current_page.first?, raw(t 'views.pagination.first'), url, remote: remote, class: 'page-link' %>
</li>
<li class='page-item disabled'>
<%= link_to raw(t 'views.pagination.truncate'), '#', class: 'page-link' %>
</li>
<li class="page-item">
<%= link_to_unless current_page.last?, raw(t 'views.pagination.last'), url, remote: remote, class: 'page-link' %>
</li>
<li class="page-item">
<%= link_to_unless current_page.last?, raw(t 'views.pagination.next'), url, rel: 'next', remote: remote, class: 'page-link' %>
</li>
<% if page.current? %>
<li class="page-item active">
<%= content_tag :a, page, data: { remote: remote }, rel: page.rel, class: 'page-link' %>
</li>
<% else %>
<li class="page-item">
<%= link_to page, url, remote: remote, rel: page.rel, class: 'page-link' %>
</li>
<% end %>
<%= paginator.render do %>
<nav>
<ul class="pagination justify-content-end">
<%= first_page_tag unless current_page.first? %>
<%= prev_page_tag unless current_page.first? %>
<% each_page do |page| %>
<% if page.left_outer? || page.right_outer? || page.inside_window? %>
<%= page_tag page %>
<% elsif !page.was_truncated? -%>
<%= gap_tag %>
<% end %>
<% end %>
<%= next_page_tag unless current_page.last? %>
<%= last_page_tag unless current_page.last? %>
</ul>
</nav>
<% end %>
<li class="page-item">
<%= link_to_unless current_page.first?, raw(t 'views.pagination.previous'), url, rel: 'prev', remote: remote, class: 'page-link' %>
</li>
......@@ -9,9 +9,11 @@
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body class='container'>
<body>
<%= render 'shared/header' %>
<div class='container'>
<%= yield %>
</div>
<%= render 'shared/footer' %>
</body>
</html>
<div class='col-4 my-2'>
<div class='card'>
<%= link_to '#', class: 'card-body text-decoration-none' do %>
<%= link_to city_jobs_path(location), class: 'card-body text-decoration-none' do %>
<h5 class='card-title font-weight-bold'><%= location.city %></h5>
<p class='card-text'><%= pluralize(location.job_count, 'Job') %></p>
<% end %>
......
......@@ -20,7 +20,7 @@
<div id='international' class='text-center'>
<h2>International</h2>
<hr>
<div class="row">
<div class='row'>
<%= render partial: 'locations/location', collection: @internal_cities_lists %>
</div>
</div>
<%= form_tag '#', method: :get, class: 'mt-4' do %>
<%= search_field_tag :search, params[:keyword], placeholder: 'Search', class: 'form-control my-2' %>
<%= select_tag :industry, options_from_collection_for_select(@industries, :id, :name, '1'), class: 'form-control my-2' %>
<%= select_tag :location, options_from_collection_for_select(@locations, :id, :city, '1'), class: 'form-control my-2' %>
<%= submit_tag 'Search', class: 'btn btn-outline-success my-2 my-sm-0' %>
<%= form_tag '#', method: :get, class: "mt-4 form-group #{my_class}" do %>
<%= search_field_tag :search, params[:keyword], placeholder: 'Search', class: 'form-control m-2' %>
<%= select_tag :industry, options_from_collection_for_select(@industries, :id, :name, '1'), class: 'form-control m-2' %>
<%= select_tag :location, options_from_collection_for_select(@locations, :id, :city, '1'), class: 'form-control m-2' %>
<%= submit_tag 'Search', class: 'btn btn-outline-success m-2' %>
<% end %>
......@@ -2,5 +2,7 @@ Rails.application.routes.draw do
root to: 'home#index'
get 'cities', to: 'locations#index'
get 'industries', to: 'industries#index'
get 'jobs/city/:id', to: 'jobs#city_job', as: :city_jobs
get 'jobs/industry/:id', to: 'jobs#industry_job', as: :industry_jobs
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
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