我有一个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
我可以看到,无论何时我点击上传(标有'导入')的按钮,我的方法' bob'被叫。我喜欢的是我在HAML呈现的文件上传实用程序中附加的文件可以访问/能够以任何方式操作它们。目前params [:file]包含一个字符串数组......这些字符串是用户上传的文件名。但实际文件并未保存在任何临时位置,因此无法以任何方式进行操作。在我看来,也许HAML部分没有做它的工作......据我所知,当我点击提交时,没有文件被上传到运行应用程序的服务器上。相反,我只是得到一个字符串,其中包含他们上传的文件名...但没有实际文件。
这是一个遗留应用程序,我无法使用Paperclip或Carrierwave - 我在其他项目中使用的有用实用程序。如果可能的话,我想上传和操作上传的文件,纯粹的'红宝石和HAML,一个人。这可能吗?
答案 0 :(得分:1)
你的小错误。该表格声明应为:
destination
您评估的内容是' / dashboard / scorecard / bob?multipart = true`。它是一个常规查询字符串参数,而不是表单选项。