Ruby on rails 解析使用camt_解析器rails gem上传的xml
我在rails应用程序中安装了camt_解析器gem。 我的目标是上传和解析camt_文件(.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
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)