diff --git a/app/controllers/api/doctrines_controller.rb b/app/controllers/api/doctrines_controller.rb index 15b633a..18ddc72 100644 --- a/app/controllers/api/doctrines_controller.rb +++ b/app/controllers/api/doctrines_controller.rb @@ -59,6 +59,19 @@ module Api respond_with @doctrine end + def suggested_contents + @doctrines = [] + search = doctrine_search(search_params.to_unsafe_h.merge({ is_grouped_by_content: true, per_page: 100000 })) + + search.group(:content).groups.each do |group_by_content| + group_by_content.results.each do |result| + @doctrines << result + end + end + + respond_with @doctrines + end + private def resource_params diff --git a/app/javascript/controllers/selectize_controller.js b/app/javascript/controllers/selectize_controller.js index 6609c4b..3a19a0f 100644 --- a/app/javascript/controllers/selectize_controller.js +++ b/app/javascript/controllers/selectize_controller.js @@ -54,7 +54,7 @@ export default class extends ApplicationController { if (value.length === 0) { if ($selectize.length) $selectize[0].selectize.clearOptions(); } else { - $.get("/api/doctrines.json", { subject_ids: value }, function(data, status) { + $.get("/api/doctrines/suggested_contents.json", { subject_ids: value }, function(data, status) { if (status === "success") { $.each(data, function (i, doctrine) { selectize_options.push({ id: doctrine.id, value: doctrine.content, text: doctrine.plain_content }); diff --git a/app/views/api/doctrines/suggested_contents.json.jbuilder b/app/views/api/doctrines/suggested_contents.json.jbuilder new file mode 100644 index 0000000..d5c23c8 --- /dev/null +++ b/app/views/api/doctrines/suggested_contents.json.jbuilder @@ -0,0 +1,3 @@ +json.array!(@doctrines) do |doctrine| + json.extract! doctrine, *%i[id subject_ids headnote content plain_content created_at updated_at] +end diff --git a/config/routes.rb b/config/routes.rb index 5770f39..bb2ae43 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -33,6 +33,7 @@ Rails.application.routes.draw do namespace :api, defaults: { format: :json } do resources :doctrines do + get :suggested_contents, on: :collection scope module: :doctrine do resources :annotations do get :search, on: :collection