sirve requisitos rails que para kali instalar gratis descargar como comando codigofacilito actualizar ruby-on-rails-4 roo-gem

ruby-on-rails-4 - requisitos - que es ruby on rails y para que sirve



Roo con rails4 que da un método indefinido `[] ''para nil: NilClass (1)

Tuve el mismo problema, parece que hay un problema sobre la codificación del archivo, utilicé este código y fue corregido.

def open_spreadsheet case File.extname(file.original_filename) when ".csv" then Roo::CSV.new(file.path, csv_options: {encoding: "iso-8859-1:utf-8"}) when ".xls" then Roo::Excel.new(file.path, nil, :ignore) when ".xlsx" then Roo::Excelx.new(file.path, nil, :ignore) else raise "Unknown file type: #{file.original_filename}" end end

Espero que eso te ayude

Estoy tratando de importar archivos CSV y Excel en un proyecto de Rails 4 (con validación) usando la gema Roo, basada en http://railscasts.com/episodes/396-importing-csv-and-excel .

Realicé algunos cambios para dar cuenta de Rails4 en lugar de Rails3 y de los cambios en Roo, y mi modelo de ProjectImporter ahora se ve así:

class ProductImport include ActiveModel::Model attr_accessor :file def initialize(attributes = {}) attributes.each { |name, value| send("#{name}=", value) } end def persisted? false end def save if imported_products.map(&:valid?).all? imported_products.each(&:save!) true else imported_products.each_with_index do |product, index| product.errors.full_messages.each do |message| errors.add :base, "Row #{index + 2}: #{message}" end end false end end def imported_products @imported_products ||= load_imported_products end def load_imported_products spreadsheet = open_spreadsheet spreadsheet.default_sheet = spreadsheet.sheets.first puts "!!! Spreadsheet: #{spreadsheet}" header = spreadsheet.row(1) (2..spreadsheet.last_row).map do |i| row = Hash[[header, spreadsheet.row(i)].transpose] product = Product.find_by(id: row[''id'']) || Product.new product.attributes = row.to_hash.slice(*[''name'', ''released_on'', ''price'']) product end end def open_spreadsheet case File.extname(file.original_filename) when ".csv" then Roo::CSV.new(file.path, nil) when ''.tsv'' then Roo::CSV.new(file.path, csv_options: { col_sep: "/t" }) when ''.xls'' then Roo::Excel.new(file.path, nil, :ignore) when ''.xlsx'' then Roo::Excelx.new(file.path, nil, :ignore) when ''.ods'' then Roo::OpenOffice.new(file.path, nil, :ignore) else raise "Unknown file type #{file.original_filename}" end end end

Cuando trato de ejecutar una importación (usando datos CSV de prueba), falla en header = spreadsheet.row(1) con el undefined method ''[]'' for nil:NilClass error undefined method ''[]'' for nil:NilClass . La declaración extra puts que he incluido confirma que la spreadsheet sí misma no es nil: !!! Spreadsheet: #<Roo::CSV:0x44c2c98> da !!! Spreadsheet: #<Roo::CSV:0x44c2c98> !!! Spreadsheet: #<Roo::CSV:0x44c2c98> . Pero si trato de llamar a casi todos los métodos esperados, como #last_row , me da el mismo error de método no definido.

Entonces, ¿qué estoy haciendo mal?