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