0

だから、私はCSVファイルを解析するために次のコードを手に入れました:

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

しかし、私には2つの関数があります。1つはCSV解析ファイルを表示するためのもので、もう1つはそれをデータベースに保存するためのものです。

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

ただし、ユーザーにファイルを再度アップロードさせることはありません。

4

2 に答える 2

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ください。このようにすると、ファイルを1回だけ読み取ることができます。

def save_CSV
  show_and_save_CSV(:save => true)
end

def show_CSV
  show_and_save_CSV(:show => true)
end
于 2012-10-02T17:52:40.677 に答える
1

現在を含むコードでは、CSV.foreach(params[:file])代わりに2つの異なる関数を呼び出します。1つはファイルを保存し、もう1つはファイルを表示します。

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
于 2012-10-02T17:48:47.883 に答える