0

我正在关注本教程CSV-FILE-EXPORT-IMPORT-RAILS但我做错了,因为当我尝试创建对象未初始化常量 CuentaContablesController::False时出现了一个愚蠢的错误。我可以毫无问题地读取文件,但是这个错误让我很头疼!任何帮助将不胜感激!

我的控制器(cuenta_contable_controller.rb)中的导入方法如下所示;

class CuentaContablesController < ApplicationController    
....
def upload(params)
logger.info "**File loaded***"
infile = params[:file].read
n, errs = 0, []
@archivo = []
SV.parse(infile) do |row|
      n += 1
      # SKIP: header i.e. first row OR blank row
      next if n == 1 or row.join.blank?
      cuenta_contable = CuentaContable.build_from_csv(row)
      if cuenta_contable.valid?
        cuenta_contable.save
        @archivo << row
      else
        errs << row
      end
    end
    logger.info errs
    flash[:success] = "Las cuentas contables fueron cargadas." 

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @archivo }
    end
  end 

我的模型(cuenta_contable.rb)像这样

class CuentaContable < ActiveRecord::Base
....
def self.build_from_csv(row)
     ultimo_nivel = (row[5].downcase=="si") ? (True):(False)
     #cuenta = find_or_initialize_by_cuenta("#{row[0]}-#{row[1]}-#{row[2]}")
     # Buscas el archivo existing customer from email or create new
    cuenta = CuentaContable.new(:cuenta => "#{row[0]}-#{row[1]}-#{row[2]}",
                                :descripcion => "#{row[3].titleize}",
                                :categoria_cuenta => "#{row[4].titleize}",
                                :ultimo_nivel=> ultimo_nivel)
    return cuenta
  end
4

1 回答 1

2

您正在使用True而不是true(同样 for false)。

但两者都不是必需的;三元是多余的和过度的括号:

# Ick!
ultimo_nivel = (row[5].downcase=="si") ? (True):(False)

# Pretty!
ultimo_nivel = row[5].downcase == "si"

您甚至可以使用帮助程序将第 5 行转换为布尔值并将其从主线代码中删除。

于 2012-07-11T22:34:14.710 回答