diff --git a/app/controllers/project_categories_controller.rb b/app/controllers/project_categories_controller.rb new file mode 100644 index 000000000..273f73c95 --- /dev/null +++ b/app/controllers/project_categories_controller.rb @@ -0,0 +1,5 @@ +class ProjectCategoriesController < ApplicationController + def index + @project_categories = ProjectCategory.search(params[:name]).without_content + end +end diff --git a/app/models/concerns/projectable.rb b/app/models/concerns/projectable.rb index 509298c6f..e44fb397c 100644 --- a/app/models/concerns/projectable.rb +++ b/app/models/concerns/projectable.rb @@ -1,8 +1,13 @@ -module ProjectAble +module Projectable extend ActiveSupport::Concern included do has_many :projects, -> { order(position: :asc) } + + scope :without_content, -> { select(column_names - ['content'])} + scope :search, lambda { |keywords| + where("name LIKE ?", "%#{keywords.split(" ").join('|')}%") unless keywords.blank? + } end module ClassMethods diff --git a/app/models/project_category.rb b/app/models/project_category.rb index decdf7646..ff9c0a849 100644 --- a/app/models/project_category.rb +++ b/app/models/project_category.rb @@ -1,5 +1,5 @@ class ProjectCategory < ApplicationRecord - include ProjectAble + include Projectable has_ancestry end diff --git a/app/models/project_language.rb b/app/models/project_language.rb index 5fb013f78..386c274e8 100644 --- a/app/models/project_language.rb +++ b/app/models/project_language.rb @@ -1,3 +1,3 @@ class ProjectLanguage < ApplicationRecord - include ProjectAble + include Projectable end diff --git a/app/views/project_categories/index.json.jbuilder b/app/views/project_categories/index.json.jbuilder new file mode 100644 index 000000000..c2f2e024c --- /dev/null +++ b/app/views/project_categories/index.json.jbuilder @@ -0,0 +1 @@ +json.project_categories @project_categories, :id, :name diff --git a/config/routes.rb b/config/routes.rb index 627807857..6f3afdc5e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,4 @@ -Rails.application.routes.draw do - +Rails.application.routes.draw do require 'sidekiq/web' require 'admin_constraint' mount Sidekiq::Web => '/sidekiq', :constraints => AdminConstraint.new @@ -23,6 +22,8 @@ Rails.application.routes.draw do put 'commons/unhidden', to: 'commons#unhidden' delete 'commons/delete', to: 'commons#delete' + resources :project_categories, only: [:index, :show] + # resources :memos do # member do # post :sticky_or_cancel