2012-10-02 58 views
0

所以,我得到了下面的代码解析一个CSV文件:传递PARAMS [:东西]另一个功能

CSV.foreach(params[:file]) do |row| 
    #bingbangbong 
end 

但我有两个功能,一个用于展示的CSV解析的文件,以及一个又一个保存在一个数据库。

我的问题是:如何通过params[:file] VAR到另一个功能,是这样的:

def show_CSV 
    CSV.foreach(params[:file]) do |row| 
     #Showing the parsed CSV 
    end 
end 

def save_CSV 
    CSV.foreach(params[:file]) do |row| 
     #Showing the parsed CSV 
    end 
end 

但是,不使用户再次上传文件。

+0

此代码在哪里存在? – apneadiving

+0

任何控制器方法都可以访问'params'函数,该函数返回请求参数。 – rewritten

回答

2
def show_and_save_CSV(options={}) 
    CSV.foreach(params[:file]) do |row| 
    if options[:show] 
     #Showing the parsed CSV 
    end 
    if options[:save] 
     # save 
    end 
    end 
end 

只要记住,CSV.foreach遍历线提供的文件,所以这样你只会读一次文件。

def save_CSV 
    show_and_save_CSV(:save => true) 
end 

def show_CSV 
    show_and_save_CSV(:show => true) 
end 
+0

工作就像一个魅力。 – kinduff

1

在你的代码,目前包含您CSV.foreach(params[:file]),只需要调用两个不同的功能,而不是 - 一个保存文件,以及一个以显示它:

def show_CSV f 
    CSV.foreach f do |row| 
     # show 
    end 
end 

def save_CSV! f 
    CSV.foreach f do |row| 
     # save 
    end 
end 

def some_calling_function # I'm guessing... in your controller? 
    ... 
    save_CSV! params[:file] 
    show_CSV params[:file] 
    ... 
end 
+0

感谢您的回答,很好的解决方法。 – kinduff

相关问题