2016-05-26 2 views
0

PostMansを使用して、レールアプリ(apiのみ)のPOSTパスにアップロードして、レールアプリに解析する方法がわかりません。API rails appはRESTを通じてデータベースにCSVをインポートします

インポートメソッドを使用してテーブルをインポートするモデルがあります。このモデルでは、CSVを受け取り、それをループスルーしてdbに追加します。

しかし、私たちがバイナリとして投稿しているので、params []を使ってコントローラ内のポストからファイルを取る方法がわかりません(あまり運がない郵便配達でもやってみました)。

私はしかし、これは私はかなりのモデルに供給する方法がわからない配列(元CSVファイル内のヘッダーがあまりにもあります)

答えて

0
を行い、コントローラ

file = CSV.read(params[:file].path)

を持っています

あなたはcsvをS3、またはDropboxにアップロードしてから、サーバーにURLを送信し、サーバーはそのCSVを読み取り、DBにインポートすることができます。ここで

はURLからCSVを読み込むための例です:

アプリ/サービス/ process_csv.rb

require 'csv' 
require 'net/http' 

class ProcessCsv  
    def initialize(csv_url) 
    @csv_url = csv_url 
    end 

    def proesss 
    uri = URI(@csv_url) 
    csv_text = Net::HTTP.get(uri) 
    csv = CSV.parse(csv_text, headers: true) 
    csv.each do |row| 
     # Process row here and import to DB here 
    end 
    end 
end 

次に、あなたのコントローラーでProcessCsvを使用することができ、あなたのコントローラのparamsがちょうどですCSVファイルではなく、CSVファイルへのURL!

0

foreachを使用してCSVを解析することができます。たとえば、以下のようなものです。

CSV.foreach(params[:file].path, headers: false) do |row| 
    Model.create(name: row[0], email: row[1]) 
end 
関連する問題