如何从 HAML 文件上传访问文件?

How to access file from HAML file upload?

我有一个 Rails 应用程序,我在其中使用 HAML 进行标记。在一个 haml 文件 (bob.html.haml) 中,我有以下内容

= form_tag bob_scorecard_dashboard_index_path :multipart=>true  do
  = file_field_tag 'file[]', multiple: true
  = submit_tag "Import"

在关联的控制器中我有

 def bob
    pp 'Do process logic on this file now... '
    file = params[:file]
    if (!file.nil?)
      pp 'hey buddy'
      pp file[0]
      #pp file[1] #This would show the second file uploaded, etc.
      #pp file[2] #Third file uploaded... and so on
    end

我可以看到,每当我点击上传(标有 'Import' 的按钮)时,我的方法 'bob' 就会被调用。我希望我在 HAML 呈现的文件上传实用程序中附加的文件 accessible/to 能够以任何方式操纵它们。当前 params[:file] 包含一个字符串数组...这些字符串是用户上传的文件名。但实际文件并未保存在任何临时位置,因此无法以任何方式进行操作。在我看来,也许 HAML 部分没有完成它的工作……据我所知,当我点击提交时,没有文件被上传到应用程序正在 运行 上的服务器。相反,我只是得到他们上传的文件名的字符串......但没有实际文件。

这是一个旧版应用程序,我无法使用 Paperclip 或 Carrierwave - 我在其他项目中使用过的有用实用程序。如果可能的话,我想单独上传和操作 'pure' ruby 和 HAML 中上传的文件。这可能吗?

你犯了个小错误。该表单声明应该是这样的:

= form_tag bob_scorecard_dashboard_index_path, :multipart => true do
                                             ↑

您评估的内容类似于“/dashboard/scorecard/bob?multipart=true”。这是一个常规的查询字符串参数,而不是表单选项。