Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中读取上传的JSON文件_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 在Rails中读取上传的JSON文件

Ruby on rails 在Rails中读取上传的JSON文件,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在Rails中上传了一个JSON文件,以便解析它,然后插入到数据库中,而不存储文件本身 形式 控制器方法 def import file = params[:file] puts "file => " + file # file => posts.json data = File.read(params[:file]) # Errno::ENOENT at /posts/import No such file or directory @ rb_sysopen -

我在Rails中上传了一个JSON文件,以便解析它,然后插入到数据库中,而不存储文件本身

形式

控制器方法

def import
  file = params[:file]

  puts "file => " + file # file => posts.json

  data = File.read(params[:file]) # Errno::ENOENT at /posts/import No such file or directory @ rb_sysopen - posts.json

  json = JSON.parse(data)
end
路线

resources :posts do
  collection { post :import }
end
在终端中请求信息,并且
posts.json
在那里,但是我在/posts/import处得到
Errno::enoint没有这样的文件或目录@rb_sysopen-posts.json

  Parameters: {"utf8"=>"✓", "authenticity_token"=>"9lzpwyCWclgiI4WA/zho5y1WLCBQtRL7z3FcAn+wc80=", "file"=>"posts.json", "commit"=>"import"}
file => posts.json
Completed 500 Internal Server Error in 23ms
解决方案:

更新表单以将文件作为多部分表单数据发送到@usmanali

= form_tag import_posts_path, multipart: true do
  = file_field_tag :file
  = submit_tag "import"
然后在控制器中直接将
读入
参数[:file]
,如本节所述


如果此线程有任何帮助,您应该将其作为多部分表单dataSee发送感谢@usmanali这完成了技巧加上方法中的新工作感谢@xenover这也有帮助
= form_tag import_posts_path, multipart: true do
  = file_field_tag :file
  = submit_tag "import"
def import
  file = params[:file].read
  data = JSON.parse(file)
end