2016-07-29 3 views
0

У меня есть функция, которая загружает CSV-файл, вызывая атрибуты с FTP-сервера, я использовал сопоставление полей, чтобы соответствующим образом сопоставлять атрибуты.Ошибка: сопоставление полей для CSV в ruby ​​

Как, возможно, может решить эту ошибку

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 

следующее это ошибка, я получаю

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 

любые подсказки, как я могу решить эту

ответ

0

В определении метода дважды splatted params могут иметь значения по умолчанию, и вы пытаетесь предоставить значения по умолчанию несуществующим локальным переменным:

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

Можно поместить nil там, или любые применимые и определены значение по умолчанию, например .:

DEFAULT_MAPPING = ... 
download_csv(page_id = default, mapping: DEFAULT_MAPPING, ...) 
Смежные вопросы