From 88795985402112dc52956209ecf76b3445d00d96 Mon Sep 17 00:00:00 2001 From: rulingcom Date: Mon, 7 Jul 2025 21:28:14 +0800 Subject: [PATCH] fix logic for import for file --- .../admin/universal_tables_controller.rb | 6 +++--- .../export_structure.xlsx.axlsx | 13 +++++++------ lib/tasks/universal_table_tasks.rake | 19 +++++++++++++------ 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/app/controllers/admin/universal_tables_controller.rb b/app/controllers/admin/universal_tables_controller.rb index 3ef07c8..9521643 100755 --- a/app/controllers/admin/universal_tables_controller.rb +++ b/app/controllers/admin/universal_tables_controller.rb @@ -162,7 +162,7 @@ end uploaded_io = params[:import_data] safe_filename = uploaded_io.original_filename.gsub(/[^0-9A-Za-z.\-_]/, '_') table_id = params[:universal_table_id] - site_locales = @site_in_use_locales.join(",") # e.g., "en,zh" + site_locales = @site_in_use_locales.join(":") # e.g., "en,zh" unless uploaded_io render json: { success: false, msg: "No file uploaded." } and return @@ -173,10 +173,10 @@ end File.open(tmp_path, 'wb') do |file| file.write(uploaded_io.read) end - Rails.logger.info "rake universal_table_tasks:import[#{tmp_path},#{table_id},#{site_locales}]" + Rails.logger.info "rake universal_table_tasks:import['#{tmp_path}','#{table_id}','#{site_locales}']" # Call the Rake task with file path Thread.new do - system("rake universal_table_tasks:import[#{tmp_path},#{table_id},#{site_locales}] >> #{Rails.root}/log/rake.log &") + system("rake universal_table_tasks:import['#{tmp_path}','#{table_id}','#{site_locales}'] >> #{Rails.root}/log/rake.log &") end render json: { diff --git a/app/views/admin/universal_tables/export_structure.xlsx.axlsx b/app/views/admin/universal_tables/export_structure.xlsx.axlsx index 4f6c0e4..a93ab7c 100755 --- a/app/views/admin/universal_tables/export_structure.xlsx.axlsx +++ b/app/views/admin/universal_tables/export_structure.xlsx.axlsx @@ -45,16 +45,17 @@ wb.add_worksheet(name: "Structure") do |sheet| when "file" # 多語系 file_title 欄位 + row << "#{column.title}" + row1 << column.key + row2 << "Separate the files by ;" + @site_in_use_locales.sort.each do |locale| - row << "#{column.title} - #{t(locale.to_s)}" + # URL 欄位 + row << "#{column.title} (註解) - #{t(locale.to_s)}" row1 << column.key - row2 << "Separate the files by" + row2 << "file_title - #{locale} ;" end - # URL 欄位 - row << "#{column.title} (註解)" - row1 << column.key - row2 << "file_title - #{locale} ;" end # <-- 正確結束 case 區塊 end diff --git a/lib/tasks/universal_table_tasks.rake b/lib/tasks/universal_table_tasks.rake index 2d47daf..09a4742 100755 --- a/lib/tasks/universal_table_tasks.rake +++ b/lib/tasks/universal_table_tasks.rake @@ -53,7 +53,7 @@ namespace :universal_table_tasks do file_path = args[:file_path] table_id = args[:table_id] - site_locales = args[:site_locales].to_s.split(",").map(&:to_sym) + site_locales = args[:site_locales].to_s.split(":").map(&:to_sym) if !file_path || !File.exist?(file_path) puts "Invalid or missing file: #{file_path}" @@ -122,19 +122,26 @@ namespace :universal_table_tasks do ce.remote_image_url = val if val.present? when "file" - file_urls = val.to_s.split(";").map(&:strip) - file_titles = row[col_idx + 1]&.value.to_s.split(";").map(&:strip) - skip = 1 + file_urls = val.to_s.split(";").map(&:strip) + file_titles = {} + skip = site_locales.size + site_locales.each_with_index do |locale, locale_idx| + file_titles[locale.to_s] = row[col_idx + locale_idx + 1]&.value.to_s.split(";").map(&:strip) + end ce.column_entry_files.destroy_all ce.column_entry_files = [] file_urls.each_with_index do |remote_url, file_idx| + if remote_url.blank? + skip = site_locales.size + end next if remote_url.blank? + debugger file = ColumnEntryFile.new file.remote_file_url = remote_url titles = {} - site_locales.each do |locale| - titles[locale.to_s] = file_titles[file_idx] rescue file.file.file.filename + site_locales.each_with_index do |locale, locale_idx| + titles[locale.to_s] = file_titles[locale.to_s][file_idx] rescue file.file.file.filename end file.file_title_translations = titles file.save!