【问题标题】:Error with Paperclip / FasterCSV Processing for optional csv upload可选 csv 上传的回形针/FasterCSV 处理出错
【发布时间】:2009-10-23 00:14:54
【问题描述】:

我有一个页面,用户可以在其中将数据导入网站。可以从 excel 复制粘贴到文本区域,也可以上传 .csv 文件。

控制器检查是否已上传 csv - 如果是,它会处理它,否则它将处理粘贴的内容。 (假设用户现在只会选择一个选项)。

复制和粘贴部分完美运行,但是,当我尝试处理上传的 csv 文件时出现问题:

我得到错误:

无法转换 ActionController::UploadedTempfile 成字符串

#events_controller
  def invite_save
    @event = Event.find(params[:id])

    if params[:guest_list_csv]
      lines = parse_csv_file(params[:guest_list_csv])
    else
      #csv file uploaded
      lines = params[:guest_list_paste]
    end

    if lines.size > 0
      lines.each do |line|
          new_user(line.split)
      end 
      flash[:notice] = "List processing was successful."
    else
      flash[:error] = "List data processing failed."
    end

  end
private

  def parse_csv_file(path_to_csv)
    lines = []

    require 'fastercsv' 

    FasterCSV.foreach(path_to_csv) do |row|
      lines << row
    end
    lines
  end

  def new_user(line)
     #code to create new user would go here
  end

我实际上是在尝试以一个流畅的动作上传和处理 csv,而不是让用户按下“处理”按钮。

【问题讨论】:

  • 能否同时显示视图和模型文件

标签: ruby-on-rails paperclip fastercsv


【解决方案1】:

在上面的第 6 行

if params[:guest_list_csv]
  lines = parse_csv_file(params[:guest_list_csv])
else
  #csv file uploaded
  lines = params[:guest_list_paste]
end

问题是params[:guest_list_csv] 不是实际的字符串,路径也不是,因为它是一个文件对象。你需要的是明确地调用#path

# line 6
  lines = parse_csv_file(params[:guest_list_csv].path)

请尝试一下,看看它是否能解决您的问题。

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2011-01-25
    相关资源
    最近更新 更多