读取文件内容rails

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

视图:

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

控制器:

 def upload_json file_data = params[:datafile] File.read(file_data) do |file| file.each do |line| ## does stuff here.... end end end 

当我播种数据时,类似的function在我的seed.rb文件中seed.rb – 只是无法在上传的文件中读取它。

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

在此先感谢您的帮助!

弄清楚了。 需要改变:

 file_data = params[:datafile] 

 file_data = params[:datafile].tempfile 

并决定使用.open函数进行更改:

 File.read(file_data) do |file| 

 File.open(file_data, 'r') do |file| 

params [:datafile]是ActionDispatch :: Http :: UploadedFile类的一个实例,其中附带了tempfile。要打开tempfile

你尝试类似的东西

 File.open(params[:datafile].path) do |file| #your stuff goes here end 

使用path打开上传的文件。

params[:datafile]ActionDispatch::Http::UploadedFile类的一个实例,你需要通过调用path来获取存储文件以正确处理它。

此外, File.read不会为您提供您正在寻找的逐行处理。 您需要将其更改为File.open

试试这个:

调节器

 def upload_json uploaded_datafile = params[:datafile] File.open( uploaded_datafile.path ) do |file| file.each_line do |line| # Do something with each line. end end end 

另类风格

 def upload_json File.foreach( params[:datafile].path ) do |line| # Do something with each line. end # FYI: The above method block returns `nil` when everything goes okay. end