From 1f7a1ce73d8b2d406c728893502669e95d55c611 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 6 Apr 2023 14:23:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=A0=87=E7=AD=BE=E5=8F=AF=E5=9C=A8=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=AE=BE=E7=BD=AE=E6=8E=A5=E5=8F=A3=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 6 ++++++ app/queries/projects/list_my_query.rb | 2 +- app/views/projects/_project_detail.json.jbuilder | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 7639f2677..9586c1e91 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -129,6 +129,12 @@ class ProjectsController < ApplicationController # TODO: # 临时特殊处理修改website、lesson_url操作方法 if project_params.has_key?("website") + if params[:project_topic_names].present? && params[:project_topic_names].is_a?(Array) + params[:project_topic_names].each do |name| + project_topic = ProjectTopic.find_or_create_by!(name: name.downcase) + project_topic.project_topic_ralates.find_or_create_by!(project: @project) + end + end @project.update(project_params) elsif project_params.has_key?("default_branch") @project.update(project_params) diff --git a/app/queries/projects/list_my_query.rb b/app/queries/projects/list_my_query.rb index acea71f31..c265cafed 100644 --- a/app/queries/projects/list_my_query.rb +++ b/app/queries/projects/list_my_query.rb @@ -61,7 +61,7 @@ class Projects::ListMyQuery < ApplicationQuery keywords = params[:search].to_s.each_char.select { |c| c.bytes.first < 240 }.join('') q = projects.ransack(name_or_identifier_cont: keywords) - scope = q.result.includes(:project_category, :project_language,:owner, :repository, :has_pinned_users) + scope = q.result.includes(:project_category, :project_language,:owner, :repository, :has_pinned_users, :project_topics) sort = Project.column_names.include?(params[:sort_by]) ? params[:sort_by] : "updated_on" sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : "desc" diff --git a/app/views/projects/_project_detail.json.jbuilder b/app/views/projects/_project_detail.json.jbuilder index c9e03fa22..c5b071abf 100644 --- a/app/views/projects/_project_detail.json.jbuilder +++ b/app/views/projects/_project_detail.json.jbuilder @@ -50,3 +50,6 @@ json.language do json.name project.project_language.name end end +json.topics project.project_topics.each do |topic| + json.(topic, :id, :name) +end \ No newline at end of file