整数

2017-02-02 4 views
0

へのシンボルの無い暗黙の変換私はExcelにファイルをインポートしようとしていますが、私は関連データを持つレコードを作成しようとすると、それは私に次のエラーを示しています。この行の整数

no implicit conversion of Symbol into Integer 

を:

ここで
list.detallelp_attributes = {Articulo: row["Articulo"], Minimo: row["Minimo"], Maximo: row["Maximo"], IdEmpresa: empresa} 

私のリストコントローラと私はインポートするために使用私の方法です:

has_many :detallelp, class_name: "Deta", foreign_key: "ListaId" 
    accepts_nested_attributes_for :detallelp 


    def self.import(file,empresa)#importar 
    @errors = [] 
    spreadsheet = open_spreadsheet(file) 
    header = spreadsheet.row(1) 
    (2..spreadsheet.last_row).each do |i| 

     row = Hash[[header, spreadsheet.row(i)].transpose] 
     list = find_by_id(row["id"]) || new 
     list.attributes = {id: row["id"], Lista: row["Nombre"], Tipo: row["Tipo"], FechaIni: row["Fecha inicial"], FechaFin: row["Fecha final"], IdEmpresa: empresa} 

     list.detallelp_attributes = {Articulo: row["Articulo"], Minimo: row["Minimo"], Maximo: row["Maximo"], IdEmpresa: empresa} 

     if list.save 
     # stuff to do on successful save 
     else 
     list.errors.full_messages.each do |message| 
      @errors << "Error fila #{i}, columna #{message}" 
     end 
     end 


    end 
    @errors # <- need to return the @errors array 
    end 

私の方法インポートリストコントローラで:

def import 
    empresa = current_usuario.empresa_id 
    @errors = List.import(params[:file], empresa) 
    if @errors.present? 
     render :errorimportation; #Redirije a dicha vista para mostrar los errores 
     return; 
    else 
     redirect_to listap_path, notice: "listas importadas." 
    end 
    end 

これが私の "DETA" コントローラです:

belongs_to :list, class_name:"List", foreign_key: "ListaId" 

答えて

1

あなたの関係はhas_manyです。したがって、accepts_nested_attributes_forの配列を想定しています。そしてあなたはそれをハッシュにしています。それがエラーの原因です。配列を付けてください。

+0

答えをいただきありがとうございます。しかし、どうすれば配列を付けることができますか?最初の列がレジストリに対応し、他の列がネストされたリソースに1つずつ対応していることをExcelで行単位で入力している場合 – LuisC

+0

@LuisC:「どのように配列を割り当てることができますか?」少なくとも、配列にそのハッシュをラップします。したがって、 'list.detallelp_attributes = [{Articulo:row [" Articulo "]、...}]'になります。 –

+1

私の友人に答えてくれてありがとう、これは動作します。どうもありがとうございました – LuisC