Commit 2adaf87c by nnnghia98

paginate jobs

parent 96afb771
...@@ -25,6 +25,7 @@ gem 'sunspot_rails' ...@@ -25,6 +25,7 @@ gem 'sunspot_rails'
gem 'sunspot_solr' gem 'sunspot_solr'
gem 'devise' gem 'devise'
gem 'activerecord-import' gem 'activerecord-import'
gem 'pry'
# Use Redis adapter to run Action Cable in production # Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0' # gem 'redis', '~> 4.0'
# Use Active Model has_secure_password # Use Active Model has_secure_password
......
...@@ -82,6 +82,7 @@ GEM ...@@ -82,6 +82,7 @@ GEM
mimemagic (>= 0.3.0) mimemagic (>= 0.3.0)
mini_mime (>= 0.1.3) mini_mime (>= 0.1.3)
childprocess (3.0.0) childprocess (3.0.0)
coderay (1.1.2)
concurrent-ruby (1.1.5) concurrent-ruby (1.1.5)
crass (1.0.5) crass (1.0.5)
devise (4.7.1) devise (4.7.1)
...@@ -144,6 +145,9 @@ GEM ...@@ -144,6 +145,9 @@ GEM
mini_portile2 (~> 2.4.0) mini_portile2 (~> 2.4.0)
orm_adapter (0.5.0) orm_adapter (0.5.0)
pr_geohash (1.0.0) pr_geohash (1.0.0)
pry (0.12.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
public_suffix (4.0.1) public_suffix (4.0.1)
puma (3.12.1) puma (3.12.1)
rack (2.0.7) rack (2.0.7)
...@@ -269,6 +273,7 @@ DEPENDENCIES ...@@ -269,6 +273,7 @@ DEPENDENCIES
kaminari kaminari
listen (>= 3.0.5, < 3.2) listen (>= 3.0.5, < 3.2)
mysql2 (>= 0.4.4) mysql2 (>= 0.4.4)
pry
puma (~> 3.11) puma (~> 3.11)
rails (~> 6.0.0) rails (~> 6.0.0)
sass-rails (~> 5) sass-rails (~> 5)
......
// Place all the styles related to the Cities controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
// Place all the styles related to the companies controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
// Place all the styles related to the industries controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
// Place all the styles related to the Jobs controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
// Place all the styles related to the StaticPages controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
class StaticPagesController < ApplicationController class StaticPagesController < ApplicationController
def index def index
@cities = City.all
@industries = Industry.all
@jobs = Job.page(params[:page]).per(5)
end end
end end
...@@ -18,7 +18,8 @@ class Company < ApplicationRecord ...@@ -18,7 +18,8 @@ class Company < ApplicationRecord
columns = [:name, :email, :address, :company_code] columns = [:name, :email, :address, :company_code]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row| CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
companies << {name: row["company name"], email: row["contact email"], address: row["company address"], company_code: row["company id"]} companies << {name: row["company name"], email: row["contact email"],
address: row["company address"], company_code: row["company id"]}
end end
Company.import columns, companies, on_duplicate_key_ignore: true Company.import columns, companies, on_duplicate_key_ignore: true
......
...@@ -20,10 +20,14 @@ class Job < ApplicationRecord ...@@ -20,10 +20,14 @@ class Job < ApplicationRecord
def self.jobs_import def self.jobs_import
jobs = [] jobs = []
columns = [:title, :level, :salary, :description, :short_des, :requirement, :category, :company_id] columns = [:title, :level, :salary, :description, :short_des, :requirement,
:category, :company_id]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row| CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
jobs << {title: row["name"], level: row["level"], salary: row["salary"], description: row["description"], short_des: row["benefit"], requirement: row["requirement"], category: row["type"], company_id: row["company id"]} jobs << {title: row["name"], level: row["level"], salary: row["salary"],
description: row["description"], short_des: row["benefit"],
requirement: row["requirement"], category: row["type"],
company_id: Company.find_by(company_code: row["company id"])&.id}
end end
Job.import columns, jobs Job.import columns, jobs
......
...@@ -4,14 +4,16 @@ ...@@ -4,14 +4,16 @@
<nav> <nav>
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<ul class="list"> <ul class="list">
<li class="list-item"> <% if user_signed_in? %>
Logged in as <strong><%= current_user.email %></strong>.
<li class="list-inline-item"></li><%= link_to "My Page", "#" %></li>
<li class="list-inline-item"></li><%= link_to "Logout", "#" %></li>
<% else %>
<li class="list-inline-item"><%= link_to "Login", "#" %></li> <li class="list-inline-item"><%= link_to "Login", "#" %></li>
<li class="list-inline-item"><%= link_to "Register", "#" %></li> <li class="list-inline-item"><%= link_to "Register", "#" %></li>
</li> <% end %>
<li class="list-item">
<li class="list-inline-item"><%= link_to "Favorite", "#" %></li> <li class="list-inline-item"><%= link_to "Favorite", "#" %></li>
<li class="list-inline-item"><%= link_to "History", "#" %></li> <li class="list-inline-item"><%= link_to "History", "#" %></li>
</li>
</ul> </ul>
</ul> </ul>
</nav> </nav>
......
<h1>VeNJOB Top page</h1> <% provide(:title, "Top Page") %>
<div class="container"> <div class="center jumbotron">
<div class="banner"> <div class="banner">
<img src="banner.png" alt="Banner">
</div>
<div class="search"></div>
<div class="lastest_jobs">
<h3>Latest jobs</h3>
<table class="table">
<tbody>
<ul class="table">
<%= render partial: "jobs/job", collection: @jobs %>
</ul>
</tbody>
</table>
<%= paginate @jobs %>
</div>
<div class="top_cities">
<h3>Top cities</h3>
<ul class="list-group list-group-horizontal">
<%= render partial: "cities/city", collection: @cities %>
</ul>
</div>
<div class="top_industries">
<h3>Top industries</h3>
<ul class="list-group list-group-horizontal">
<%= render partial: "industries/industry", collection: @industries %>
</ul>
</div> </div>
</div> </div>
<% provide(:title, "Top Page") %>
<h1>VeNJOB Top page</h1>
<div class="container">
<div class="banner">
<img src="banner.png" alt="Banner">
</div>
<div class="search"></div>
<div class="lastest_jobs">
<h3>Latest jobs</h3>
<table class="table">
<tbody>
<ul class="table">
<%= render partial: "jobs/job", collection: @jobs %>
</ul>
</tbody>
</table>
<%= paginate @jobs %>
</div>
<div class="top_cities">
<h3>Top cities</h3>
<ul class="list-group list-group-horizontal">
<%= render partial: "cities/city", collection: @cities %>
</ul>
</div>
<div class="top_industries">
<h3>Top industries</h3>
<ul class="list-group list-group-horizontal">
<%= render partial: "industries/industry", collection: @industries %>
</ul>
</div>
</div>
...@@ -5,10 +5,4 @@ class CitiesControllerTest < ActionDispatch::IntegrationTest ...@@ -5,10 +5,4 @@ class CitiesControllerTest < ActionDispatch::IntegrationTest
get cities_index_url get cities_index_url
assert_response :success assert_response :success
end end
test "should get import" do
get cities_import_url
assert_response :success
end
end end
...@@ -5,10 +5,4 @@ class CompaniesControllerTest < ActionDispatch::IntegrationTest ...@@ -5,10 +5,4 @@ class CompaniesControllerTest < ActionDispatch::IntegrationTest
get companies_index_url get companies_index_url
assert_response :success assert_response :success
end end
test "should get import" do
get companies_import_url
assert_response :success
end
end end
...@@ -5,10 +5,4 @@ class IndustriesControllerTest < ActionDispatch::IntegrationTest ...@@ -5,10 +5,4 @@ class IndustriesControllerTest < ActionDispatch::IntegrationTest
get industries_index_url get industries_index_url
assert_response :success assert_response :success
end end
test "should get import" do
get industries_import_url
assert_response :success
end
end end
...@@ -10,5 +10,4 @@ class JobsControllerTest < ActionDispatch::IntegrationTest ...@@ -10,5 +10,4 @@ class JobsControllerTest < ActionDispatch::IntegrationTest
get jobs_import_url get jobs_import_url
assert_response :success assert_response :success
end end
end end
...@@ -6,20 +6,8 @@ class StaticPagesControllerTest < ActionDispatch::IntegrationTest ...@@ -6,20 +6,8 @@ class StaticPagesControllerTest < ActionDispatch::IntegrationTest
end end
test "should get top_page" do test "should get top_page" do
get static_pages_top_page_url get static_pages_index_url
assert_response :success assert_response :success
assert_select "title", "Top Page | #{@base_title}" assert_select "title", "Top Page | #{@base_title}"
end end
test "should get favorite" do
get static_pages_favorite_url
assert_response :success
assert_select "title", "Favorite | #{@base_title}"
end
test "should get history" do
get static_pages_history_url
assert_response :success
assert_select "title", "History | #{@base_title}"
end
end end
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
city: one
job: one
two:
city: two
job: two
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
url: MyString
title: MyString
crawled: false
two:
url: MyString
title: MyString
crawled: false
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
name: MyString
two:
name: MyString
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
industry: one
job: one
two:
industry: two
job: two
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
title: MyString
level: MyString
salary: MyString
other_salary: MyString
description: MyText
short_des: MyText
requirement: MyText
category: 1
post_date: 2019-11-26 15:31:10
expiration_date: 2019-11-26 15:31:10
company: one
two:
title: MyString
level: MyString
salary: MyString
other_salary: MyString
description: MyText
short_des: MyText
requirement: MyText
category: 1
post_date: 2019-11-26 15:31:10
expiration_date: 2019-11-26 15:31:10
company: two
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