2012-10-02 97 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

相關問題