Commit d66ca2b0 by Ngô Trung Hưng

add page 404

parent 39a4990a
Pipeline #824 canceled with stages
in 0 seconds
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
// Place all the styles related to the error controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
.box_content_404 {
width: 100vw;
height: 100vh;
z-index: 2000;
// height: 900px;
position: fixed;
top: 60px;
left: 0;
right: 0;
bottom: 0;
background-color: #fff;
}
.box_content_404_img {
margin: auto;
width: 700px
}
.img_404 {
width: 100%;
}
.box_content_404_text {
text-align: center;
span {
font-size: 30px;
font-weight: 800;
color: #99a6d5;
}
}
.box_content_404_back_to_home {
text-align: center;
a {
font-size: 22px;
color: #1a2c55;
&:hover {
text-decoration: none;
color: red;
}
}
}
# frozen_string_literal: true
# /home/hungnt/project/venjob/app/common/slug.rb
module Slug
def self.to_slug(str)
str = str.to_s.strip.downcase
......@@ -21,4 +24,4 @@ module Slug
str = str.gsub(/[ ]+/, ' ')
str.tr(' ', '-')
end
end
\ No newline at end of file
end
# frozen_string_literal: true
# Controller error
class ErrorController < ApplicationController
def file_not_found; end
def internal_server_error; end
end
......@@ -7,7 +7,7 @@ class JobController < ApplicationController
def index
model = params[:model].classify.constantize
obj = model.find_by(slug: params[:slug])
result(obj)
render_result(obj)
end
private
......@@ -17,7 +17,7 @@ class JobController < ApplicationController
@cities = City.select(:id, :name)
end
def result(obj)
def render_result(obj)
@keyword = obj.name
@data = obj.jobs.page(params[:page])
render 'result_data'
......
module ErrorHelper
end
......@@ -17,6 +17,6 @@ class City < ApplicationRecord
end
def convert_to_slug
self.slug = Slug.to_slug(self.name + ' ' + rand(10000).to_s)
self.slug = Slug.to_slug("#{name} #{rand(10000)}")
end
end
......@@ -7,6 +7,6 @@ class Company < ApplicationRecord
has_many :jobs
def convert_to_slug
self.slug = Slug.to_slug(self.name)
self.slug = Slug.to_slug("#{name} #{rand(10000)}")
end
end
......@@ -12,6 +12,6 @@ class Industry < ApplicationRecord
end
def convert_to_slug
self.slug = Slug.to_slug(self.name + ' ' + rand(10000).to_s)
self.slug = Slug.to_slug("#{name} #{rand(10000)}")
end
end
<div class="box_content_404">
<div class="container">
<div class="col-lg-12">
<div class="box_content_404_img">
<%= image_tag '404.svg', class: 'img_404' %>
</div>
</div><br>
<div class="col-lg-12">
<div class="box_content_404_text">
<span>Chúng tôi không tìm thấy trang bạn bạn yêu cầu!</span>
</div>
</div>
<div class="col-lg-12">
<div class="box_content_404_back_to_home">
<%= link_to 'Cùng mình quay lại trang chủ nhé', root_path %>
</div>
</div>
</div>
</div>
<div class="box_content_404">
<div class="container">
<div class="col-lg-12">
<div class="box_content_404_img">
<%= image_tag '500.png', class: 'img_404'%>
</div>
</div><br>
<div class="col-lg-12">
<div class="box_content_404_text">
<span>Có vài lỗi trong đường dẫn này<br>
Đừng lo lắng! Xin lỗi bạn vì sự bất tiện trên
</span>
</div>
</div>
<div class="col-lg-12">
<div class="box_content_404_back_to_home">
<%= link_to 'Cùng mình quay lại trang chủ nhé', root_path %>
</div>
</div>
</div>
</div>
<div class = "box-banner">
<%= image_tag 'banner-search-box-home', class: "banner-top" %>
<%= image_tag 'banner-search-box-home', class: 'banner-top' %>
<div class="row">
<div class="col-xs-12">
<div class = "slogan">
......@@ -15,14 +15,14 @@
<!-- Process search pc-->
<div class="box-search">
<div class="search_scaffold">
<div class="search_scaffold">
<div class = "total_job">
<% if @job_count.blank? %>
<h4 class="show_total_job">Khám phá ngay những việc làm tốt nhất trên VenJob</h4>
<% else %>
<h4 class="show_total_job">Khám phá ngay <b><%= @job_count%></b> việc làm tốt nhất trên VenJob</h4>
<% end %>
</div>
</div>
<div class="filter_box">
<div class="search_input">
<input type="search" name="" id="" class="custom_input_search" placeholder="Nhập tiêu đề, công ty, địa điểm...">
......@@ -31,29 +31,29 @@
<div class="icon_list">
<i class="fa fa-list-ul" aria-hidden="true"></i>
</div>
<%= select_tag 'industry', options_from_collection_for_select(@industries, "id", "name"), class: 'show_list_industries' %>
<%= select_tag 'industry', options_from_collection_for_select(@industries, 'id', 'name'), class: 'show_list_industries' %>
</div>
<div class="search_location">
<div class="icon_list">
<i class="fas fa-map-marker-alt"></i>
</div>
<%= select_tag 'city', options_from_collection_for_select(@cities, "id", "name", "1"), class: 'show_list_cities' %>
</div>
<%= select_tag 'city', options_from_collection_for_select(@cities, 'id', 'name', '1'), class: 'show_list_cities' %>
</div>
<div class="search_submit">
<button type="submit" class="btn_search_submit">
<i class="fas fa-search"></i>
Tìm việc
</button>
</button>
</div>
</div>
</div>
</div>
</div>
<!-- Process search tablet-->
<div class="box-search-tablet">
<div class="search_scaffold-tablet">
<div class="search_scaffold-tablet">
<div class = "total_job">
<h4 class="show_total_job">Khám phá ngay <b><%=@job_count%></b> việc làm tốt nhất trên VenJob</h4>
</div>
</div>
<div class="filter_box filter_box_tablet">
<div class="search_input">
<input type="search" name="" id="" class="custom_input_search" placeholder="Nhập tiêu đề, công ty, địa điểm...">
......@@ -62,22 +62,22 @@
<div class="icon_list">
<i class="fa fa-list-ul" aria-hidden="true"></i>
</div>
<%= select_tag 'industry', options_from_collection_for_select(@industries, "id", "name"), class: 'show_list_industries' %>
<%= select_tag 'industry', options_from_collection_for_select(@industries, 'id', 'name'), class: 'show_list_industries' %>
</div>
<div class="search_location">
<div class="icon_list">
<i class="fas fa-map-marker-alt"></i>
</div>
<%= select_tag 'city', options_from_collection_for_select(@cities, "id", "name", "1"), class: 'show_list_cities' %>
<%= select_tag 'city', options_from_collection_for_select(@cities, 'id', 'name', '1'), class: 'show_list_cities' %>
</div>
<div class="search_submit">
<button type="submit" class="btn_search_submit">
<i class="fas fa-search"></i>
Tìm việc
</button>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="box-show-total-jobs-mobile">
<span>Khám phá ngay <%=@job_count%></b> việc làm tốt nhất trên VenJob</span>
......@@ -92,12 +92,12 @@
</div>
<div class="col-sm-6 col-xs-12">
<div class="search_industries_mobile">
<%= select_tag 'industry', options_from_collection_for_select(@industries, "id", "name"), class: 'show_list_industries_mobile' %>
<%= select_tag 'industry', options_from_collection_for_select(@industries, 'id', 'name'), class: 'show_list_industries_mobile' %>
</div>
</div>
<div class="col-sm-6 col-xs-12">
<div class="search_location_mobile">
<%= select_tag 'city', options_from_collection_for_select(@cities, "id", "name", "1"), class: 'show_list_cities_mobile' %>
<%= select_tag 'city', options_from_collection_for_select(@cities, 'id', 'name', '1'), class: 'show_list_cities_mobile' %>
</div>
</div>
</div>
......@@ -109,7 +109,7 @@
<button type="submit" class="btn_search_submit">
<i class="fas fa-search"></i>
Tìm việc
</button>
</button>
</div>
</div>
</div>
......
<%cru = 0%>
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="col-sm-12">
<div class="box_jobs">
<div class="col-sm-12 d-block d-sm-none">
<% if cru == 1 %>
<div class="link_favorite_top block_link_favorite md">
<span><%= link_to '<i class="far fa-heart"></i>'.html_safe,'#',class: 'link_favorite'%><span>
</div>
<% else %>
<div class="block_click_favorite link_favorite_top ">
<span><i class="far fa-heart"></i><span>
</div>
<% end %>
<div class="col-sm-12 d-block d-sm-none">
<div class="link_favorite_top block_link_favorite md">
<span><%= link_to '<i class="far fa-heart"></i>'.html_safe, '#', class: 'link_favorite' %><span>
</div>
</div>
<div class="row">
<div class="col-sm-10 col-md-9 col-lg-10">
<div class="box_info">
<div class="lol">
<%= link_to data.name, '#', class: 'job_name' %>
</div>
<div class="lol">
<%= link_to data.name, '#', class: 'job_name' %>
</div>
<div class="cop">
<h5 class="box_info_copany_name"><i class="far fa-building"></i> <%= data.company.name %></h5>
</div>
<div class="loc">
<h5 class="box_info_location"><i class="fas fa-map-marker-alt"></i>
<% dt = [] %>
<% data.cities.each do |x| %>
<% dt << (x.name << ' | ') %>
<% end %>
<%= dt.join('').chomp('| ')%>
<%= data.cities.map(&:name).join(' | ') %>
</h5>
</div>
<h5 class="box_info_salary"><i class="fas fa-dollar-sign"></i>&nbsp; Lương: <%= data.salary %></h5>
......@@ -38,29 +27,18 @@
</div>
</div>
</div>
<div class="col-sm-2 col-md-3 d-none d-sm-block col-lg-2">
<% if cru == 1 %>
<div class="box_link_favotite">
<div class="block_link_favorite lg">
<span><i class="far fa-heart"></i> <%= link_to 'Yêu thích'.html_safe,'#',class: 'link_favorite'%><span>
</div>
<div class="block_link_favorite md">
<span><%= link_to '<i class="far fa-heart"></i>'.html_safe,'#',class: 'link_favorite'%><span>
</div>
<div class="col-sm-2 col-md-3 d-none d-sm-block col-lg-2">
<div class="box_link_favotite">
<div class="block_link_favorite lg">
<span><i class="far fa-heart"></i> <%= link_to 'Yêu thích', '#', class: 'link_favorite' %><span>
</div>
<% else %>
<div class="box_link_favotite">
<div class="block_click_favorite lg">
<span><i class="far fa-heart"></i> Yêu thích<span>
</div>
<div class="block_click_favorite md">
<span><i class="far fa-heart"></i><span>
</div>
<div class="block_link_favorite md">
<span><%= link_to '<i class="far fa-heart"></i>'.html_safe, '#', class: 'link_favorite' %><span>
</div>
<% end %>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
</div>
......@@ -6,7 +6,11 @@
<div class="col-lg-12">
<div class="breadcrumb_total_search">
<span class="breadcrumb-item active">
&nbsp;<b><%= @data.total_count %></b>&nbsp;kết quả phù hợp với từ khóa&nbsp;<b><%= @keyword %></b>&nbsp;
<% if @data.total_count > 0 %>
&nbsp;<b><%= @data.total_count %></b>&nbsp;kết quả phù hợp với từ khóa&nbsp;<b><%= @keyword %></b>&nbsp;
<% else %>
Không có kết quả phù hợp với từ khóa&nbsp;<b><%= @keyword %></b>
<% end %>
</span>
</div>
</div>
......
......@@ -10,6 +10,7 @@ module Venjob
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 5.2
config.exceptions_app = self.routes
config.autoload_paths << Rails.root.join('lib/src')
# Settings in config/environments/* take precedence over those specified here.
# Application configuration can go into files in config/initializers
......
......@@ -10,7 +10,7 @@ Rails.application.configure do
config.eager_load = false
# Show full error reports.
config.consider_all_requests_local = true
config.consider_all_requests_local = false
# Enable/disable caching. By default caching is disabled.
# Run rails dev:cache to toggle caching.
......
......@@ -7,4 +7,8 @@ Rails.application.routes.draw do
# Search
get 'jobs/:model/:slug', to: 'job#index', as: :jobs
# Rails error
match '/404', to: 'error#file_not_found', via: :all
match '/500', to: 'error#internal_server_error', via: :all
end
......@@ -5,7 +5,7 @@ require 'open-uri'
# rake task
namespace :crawler do
task populate: :environment do
NUMBER_LINK_WILL_BE_CRAWLER = 6
NUMBER_LINK_WILL_BE_CRAWLER = 8
Company.find_or_create_by(name: 'Bảo mật') do |company|
company.address = 'Vui lòng xem trong mô tả công việc'
company.short_description = 'Vui lòng xem trong mô tả công việc'
......@@ -13,6 +13,6 @@ namespace :crawler do
cw = Crawler.new(NUMBER_LINK_WILL_BE_CRAWLER)
cw.craw_data_cities
cw.craw_data_companies
CrawlerJob.new(NUMBER_LINK_WILL_BE_CRAWLER).craw_data_jobs
CrawlerJob.new(NUMBER_LINK_WILL_BE_CRAWLER).craw_data_jobs
end
end
require 'test_helper'
class ErrorControllerTest < ActionDispatch::IntegrationTest
# test "the truth" do
# assert true
# 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