Ruby on Rails上传文件

时间:2017-09-05 16:36:14

标签: ruby-on-rails ruby post

尝试保存文件后出现此错误。

  

未定义的方法`original_filename' for"截图2017-08-26 22-12-42.png":String

def upload
  uploaded_io = params[:person][:picture]
  File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
    file.write(uploaded_io.read)
  end
end

那是我的请求参数

{"utf8"=>"✓",
 "authenticity_token"=>"JqTuIpsrX/rfJ2/r74EbLjuWI/UlxpxpEWnX64ruRjO/UQfrDk/q/MhVLNOG16YJOBxmt84t4tfw4YZDFbRIzQ==",
 "description"=>{"position"=>"5", "title"=>"title", "short_description"=>"qweqwe", "long_description"=>"qweqwe"},
 "photos"=>{"photo"=>"Screenshot from 2017-08-26 22-12-42.png"},
 "button"=>""}

2 个答案:

答案 0 :(得分:0)

我建议使用carrierwave执行文件上传。使用它的方法非常简单,并且有不同的处理工具。

您可以使用以下指南实现此gem:

https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-use-carrierwave-with-devise

答案 1 :(得分:0)

首先,我要感谢@kiddorails的帮助。

这里的文档很清楚" http://guides.rubyonrails.org/form_helpers.html#uploading-files",问题出在视图文件中,我没有在表单中放置帮助器,

<%= f.file_field :picture %>

如文档中所示。

<%= form_for @person do |f| %>
<%= f.file_field :picture %>
<% end %>