读取文件内容rails

mat*_*wvb 8 json ruby-on-rails ruby-on-rails-3

我有一个表单试图读取JSON文件以解析/ actions/etc. 我在控制器中读取它时遇到问题.

视图:

<%= form_tag({:controller => :admins, :action => :upload_json}, {:multipart => true, :method => :post}) do |f| %>

    <%= file_field_tag 'datafile' %>

<%= submit_tag "Upload" %>
Run Code Online (Sandbox Code Playgroud)

控制器:

def upload_json

  file_data = params[:datafile]

  File.read(file_data) do |file|

     file.each do |line|
       ## does stuff here....
     end
  end

end
Run Code Online (Sandbox Code Playgroud)

seed.rb当我播种数据时,类似的功能在我的文件中起作用- 只是无法在上传的文件中读取它.

我得到的错误是:can't convert ActionDispatch::Http::UploadedFile into String.

在此先感谢您的帮助!

mat*_*wvb 22

弄清楚了.需要改变:

file_data = params[:datafile]
Run Code Online (Sandbox Code Playgroud)

file_data = params[:datafile].tempfile
Run Code Online (Sandbox Code Playgroud)

并决定使用该.open功能进行更改:

File.read(file_data) do |file|
Run Code Online (Sandbox Code Playgroud)

File.open(file_data, 'r') do |file|  
Run Code Online (Sandbox Code Playgroud)