ImagesController#import 中的 NoMethodError / Image:Class 的未定义方法“导入”

NoMethodError in ImagesController#import / undefined method `import' for Image:Class

我在上传 .csv 文件以及将图片上传到我的网页时出错:

Error NoMethodError in ImagesController#import undefined method `import' for Image:Class

Model/image.rb

class Image < ApplicationRecord
   has_one_attached :avatar
     end
def self.import
        CSV.foreach(file.path, headers: true) do |row|
          Image.create! row.to_hash
     end
end

controller/images_controller.rb

 def import
    Image.import(params[:file])
    redirect_to images_path, notice: "excel import successfully"
  end
  1. 您应该从第 1 行中删除 end。 3 并将其放在文件末尾,即 class 方法和实例方法应在 class here
  2. 中定义
  3. 由于方法import接受参数,定义为import(arg)

下面的代码片段应该可以帮助您更好地理解。

    class Image < ApplicationRecord
       has_one_attached :avatar
    
       def self.import(file)
           CSV.foreach(file.path, headers: true) do |row|
               Image.create! ... # required attributes
           end
       end
    end