Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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/5/ruby/22.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 解析使用camt_解析器rails gem上传的xml_Ruby On Rails_Ruby_Bank - Fatal编程技术网

Ruby on rails 解析使用camt_解析器rails gem上传的xml

Ruby on rails 解析使用camt_解析器rails gem上传的xml,ruby-on-rails,ruby,bank,Ruby On Rails,Ruby,Bank,我在rails应用程序中安装了camt_解析器gem。 我的目标是上传和解析camt_文件(.xml) 当我以这种方式解析本地文件时,它可以完美地工作: require 'camt_parser' require 'camt' camt = CamtParser::File.parse 'CAMT053_140518.xml' puts camt.group_header.creation_date_time camt.statements.each do |statement| sta

我在rails应用程序中安装了camt_解析器gem。 我的目标是上传和解析camt_文件(.xml)

当我以这种方式解析本地文件时,它可以完美地工作:

require 'camt_parser'
require 'camt'
camt = CamtParser::File.parse 'CAMT053_140518.xml'
puts camt.group_header.creation_date_time
camt.statements.each do |statement|
    statement.entries.each do |entry|
        # Access individual entries/bank transfers
     #   puts "->"
     puts entry.description
     puts entry.debit
     p entry.transactions[0].iban
     p entry.transactions[0].transaction_id
     puts entry.transactions[0].debitor.iban
    end
end
但是,当我尝试使用以下代码将其作为文件从我的视图上载时:

<%= form_tag '/patient_page/import_camt', :multipart => true do %>
    <label for="file">Upload text File</label> <%= file_field_tag "file" %>
    <%= submit_tag %>
<% end %>
我得到以下错误

“没有将ActionDispatch::Http::UploadedFile隐式转换为字符串” 当我试图解析上传的文件时,在第行

有什么提示吗


谢谢

CamtParser::File.parse需要一个文件路径,但您正在传递一个
ActionDispatch::Http::UploadedFile
对象

当您在rails中上载文件时,该文件被包装在
ActionDispatch::Http::UploadedFile
的实例中。要访问文件本身,有一个名为
tempfile
的属性

这将返回表示正在上载的实际文件的
Tempfile
Tempfile
有一个
path
方法,该方法是文件本身的路径,因此,因为
CamtParser::file.parse
需要一个文件路径,它可以按如下方式调用

CamtParser::File.parse(uploaded_file.tempfile.path) 
CamtParser
还有一个
String
类,可以解析适当的字符串,因此您可以将其称为

CamtParser::String.parse(uploaded_file.read)

这是因为
ActionDispatch::Http::UploadedFile
公开了方法
read
,这与调用
uploaded\u file.tempfile.read

相同感谢您的回复,我改变了您所说的内容,它在app/controllers/patient\u page\u controller.rb:10:in`import\u camt'Rendering/Users/Djodjo/.rvm/gems/ruby-2.4中抛出了这个错误。0@global/rescues/布局渲染中的gems/actionpack-5.0.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb/Users/Djodjo/.rvm/gems/ruby-2.4。0@global/gems/actionpack-5.0.2/lib/action\u dispatch/middleware/templates/rescues//u source.html.erb Rendered/Users/Djodjo/.rvm/gems/ruby-2.4。0@global/gems/actionpack-5.0.2/lib/action\u dispatch/middleware/templates/rescues//\u source.html.er还有一些我可以粘贴的行,如果需要的话,它们会像一个符咒一样工作,谢谢你!你能给我详细解释一下发生了什么事吗?
CamtParser::String.parse(uploaded_file.read)