gpt4 book ai didi

ruby-on-rails - 字符串的未定义方法 `original_filename'

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:21 25 4
gpt4 key购买 nike

我正在尝试在不使用诸如 paperclip 之类的 gem 的情况下实现 csv 上传功能。这是 View :

 %h1 Add Users From CSV
= form_tag(:action => "upload",:multipart => true,:method => :post) do
= file_field_tag 'csv'
= submit_tag 'Upload'

这是 Controller :

def upload
csv_io = params[:csv]

File.open(Rails.root.join('public', 'uploads', csv_io.original_filename), 'wb') do |file|
file.write(csv_io.read)
end

redirect_to root_path, :notice => "Successfully uploaded csv!"
end

但是当我上传名为 data.csv

的 csv 文件时收到此错误消息
undefined method `original_filename' for "data.csv":String

我刚刚按照官方 Rails 指南进行操作,但仍然出现错误。谁能提出一些解决方案?

注意:我只需要从 csv 文件中读取数据,不需要将其永久保存在服务器上。

最佳答案

您将参数传递给 form_tag 的方式,您的所有参数都被视为第一个 form_tag 参数 url_for_options 的一部分,而不是部分进入第二个参数 options(有关方法定义,请参阅 http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag)。

根据 http://guides.rubyonrails.org/form_helpers.html#uploading-files 的指南,您可以使用以下语法来实现您想要的:

form_tag({:action => "upload"},:multipart => true)

您不需要设置:method,因为它默认为post

关于ruby-on-rails - 字符串的未定义方法 `original_filename',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com