2016-07-29 2 views
0

Ich habe eine Funktion, die CSV-Datei durch den Aufruf von Attributen von FTP-Server herunterlädt, ich verwendete Feldzuordnung, um die Attribute entsprechend abzubilden.Fehler: Feldzuordnung für CSV in Ruby

Wie kann möglicherweise diesen Fehler beheben

def download_csv(page_id = fetch_grid_ids.first, mapping: mapping, csv_options: csv_options) 
     results = fetch_grid(page_id) 
     records = results['response']['data'] 
     output = [] 
     record_count = records.size 

     if mapping 
     headers = mapping.values 
     download_headers = mapping.keys 
     elsif @config[:output_file_headers] 
     headers = @config[:output_file_headers] 
     download_headers = headers 
     else 
     headers = data.first.keys 
     headers.shift 
     download_headers = headers 
     end 

     download_headers = download_headers.map(&:to_s) 

     output << CSV.generate_line(headers, csv_options) 

     records.each_with_index do |r, i| 
     row = [] 

     download_headers.each do |h| 
      row << r[h] rescue nil 
     end 

     logger.info "PriceFx::Client.download: #{i + 1}/#{record_count} :: #{row.size}" 
     output << CSV.generate_line(row, csv_options) 
     end 

     filename = "#{Rails.configuration.tmp_dir}/#{@config[:output_file]}_#{page_id}.csv" 
     File.open(filename, 'wb') {|f| f.puts output } 

     return filename 
    end 

finden Sie die Fehler, die ich

client.rb:224: syntax error, unexpected tLABEL 
... fetch_grid_ids.first, mapping: mapping, csv_options: csv_op... 
...        ^
client.rb:452: syntax error, unexpected keyword_end, expecting $end 

irgendwelche Hinweise bin immer wie ich dieses Problem lösen kann

Antwort

0

In Methodendefinition doppelt splatted Parameter können Standardwerte haben und Sie versuchen, Standardwerte mit nicht vorhandenen lokalen Variablen zu liefern:

#          ⇓⇓⇓⇓⇓⇓⇓ ??? 
download_csv(page_id = default, mapping: mapping, ...) 

Man könnte nil dort setzen, oder eine anwendbare und definiert Standardwert, z.B .:

DEFAULT_MAPPING = ... 
download_csv(page_id = default, mapping: DEFAULT_MAPPING, ...)