7stud2
(7stud --)
23 February 2014 18:10
1
Can anyone tell me why I am getting the error ?
require 'csv'
_output_file_path =
File.expand_path('output.csv',File.dirname(__FILE__))
hash = { 'A' => [ 'v', 'x', 'y' , 'z' ] ,
'B' => [ 'm', 'n' , 'o' ] ,
'C' => [ 'i', 'j' , 'k' , 'l', 'm', 'n' , 'o' ]
}
headers = hash.keys
csv_row = CSV::Row.new(headers,[],true)
csv_table = CSV::Table.new(csv_row)
headers.each do |col_name|
csv_table[col_name] = hash[col_name]
end
p csv_table.to_csv
# ~> /home/kirti/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/csv.rb:726:in
`block in []=': undefined method `header_row?' for ["A", nil]:Array
(NoMethodError)
# ~> from
/home/kirti/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/csv.rb:504:in
`each'
# ~> from
/home/kirti/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/csv.rb:504:in
`each'
# ~> from
/home/kirti/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/csv.rb:725:in
`each_with_index'
# ~> from
/home/kirti/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/csv.rb:725:in `[]='
# ~> from -:16:in `block in <main>'
# ~> from -:15:in `each'
# ~> from -:15:in `<main>'
···
--
Posted via http://www.ruby-forum.com/ .
7stud2
(7stud --)
23 February 2014 19:14
2
I have fixed the error. But csv_table not showing any data .
require 'csv'
_output_file_path =
File.expand_path('output.csv',File.dirname(__FILE__))
hash = { 'A' => [ 'v', 'x', 'y' , 'z' ] ,
'B' => [ 'm', 'n' , 'o' ] ,
'C' => [ 'i', 'j' , 'k' , 'l', 'm', 'n' , 'o' ]
}
headers = hash.keys
csv_row = CSV::Row.new(headers,[],true)
csv_table = CSV::Table.new([csv_row])
csv_table.delete(1)
headers.each do |col_name|
csv_table[col_name] = hash[col_name]
end
csv_table.to_csv
# => "A,B,C\n"
What wrong I did here ?
···
--
Posted via http://www.ruby-forum.com/ .
abinoam
(Abinoam Praxedes Marques Jr.)
25 February 2014 00:05
3
Dear Arup,
Look at Class: CSV::Table (Ruby 2.1.0)
"Columns are returned as an Array of values. Altering that Array has
no effect on the table."
headers.each do |col_name|
p csv_table[col_name].class # Add this line
csv_table[col_name] = hash[col_name]
end
And you will see:
Array
Array
Array
Abinoam Jr.
···
On Sun, Feb 23, 2014 at 4:14 PM, Arup Rakshit <lists@ruby-forum.com> wrote:
I have fixed the error. But csv_table not showing any data .
require 'csv'
_output_file_path =
File.expand_path('output.csv',File.dirname(__FILE__))
hash = { 'A' => [ 'v', 'x', 'y' , 'z' ] ,
'B' => [ 'm', 'n' , 'o' ] ,
'C' => [ 'i', 'j' , 'k' , 'l', 'm', 'n' , 'o' ]
}
headers = hash.keys
csv_row = CSV::Row.new(headers, ,true)
csv_table = CSV::Table.new([csv_row])
csv_table.delete(1)
headers.each do |col_name|
csv_table[col_name] = hash[col_name]
end
csv_table.to_csv
# => "A,B,C\n"
What wrong I did here ?
--
Posted via http://www.ruby-forum.com/\ .
7stud2
(7stud --)
25 February 2014 08:09
4
Abinoam Jr. wrote in post #1137892:
Dear Arup,
Look at
Class: CSV::Table (Ruby 2.1.0)
"Columns are returned as an Array of values. Altering that Array has
no effect on the table."
But I am using the method `# =`
(Class: CSV::Table (Ruby 2.1.0)
) not `# `.
In the default mixed mode, this method **assigns rows for index access
and columns for header access.**
···
--
Posted via http://www.ruby-forum.com/\ .
7stud2
(7stud --)
25 February 2014 08:09
5
Abinoam Jr. wrote in post #1137892:
Dear Arup,
Look at
Class: CSV::Table (Ruby 2.1.0)
"Columns are returned as an Array of values. Altering that Array has
no effect on the table."
But I am using the method `# =`
(Class: CSV::Table (Ruby 2.1.0)
) not `# `.
In the default mixed mode, this method **assigns rows for index access
and columns for header access.**
···
--
Posted via http://www.ruby-forum.com/\ .