系统不想在rails上的ruby中写入tmpfile吗?

我在Ruby on Rails中实现,我想这样做,在我的第一个视图中,我浏览到一个文件(CSV文件)。 我读了它并把它放在TempFile中。 然后在我的第二个视图中,我展示了例如前5行。 然后在我的第三个视图中,我想再次显示第一行。 我的控制器是:

class ProjectImporterController = sample_count break end i = i+1 end end end def result tmpfilename = session[:importer_tmpfile] if tmpfilename tmpfile = $tmpfiles[tmpfilename] if tmpfile flash[:error] = "Tempfile doesn't exist!" return end @parsed_file=CSV::Reader.parse(tmpfile) @samples = [] @parsed_file.each do |row| if i != 0 @samples[i] = row end if i == 0 @headers = row end if i >= sample_count break end i = i+1 end end end 

现在我的第一个视图的代码就是:

   'match'}, {:multipart => true}) do %> 
60%>

第二和第三个视图是相同的:

 

这只是一个简单的例子,但在我的第二个视图中,一切正常,系统只显示第一个结果。 但是在我的第三个视图中,我得到一个错误,其中包含:nil的未定义方法`each’:NilClass。 所以@samples = nil。 有谁知道我做错了什么?

谢谢

您只获得没有完整路径的文件名。 要获取上传的Tempfile的路径,请在上传表单的操作中使用此路径:

 tempfile=params[:file].tempfile.to_path.to_s 

这为您提供了上传文件的完整路径,以便您可以打开该文件。