11155
(-- --)
June 5, 2012, 5:58pm
1
Hi ,
I have created an array of hashes using
Model file class
Class A < ActiveRecord::Base
def fill_paths
paths = Array.new
for file in @files
path = {}
path["a"] = file
path["b"] = DATA2(assume data2 is valid)
paths << path
end
return paths
end
in controller class
@paths = A.fill_paths
for path in @paths
puts path.a
end
I cant access path.a, which says
"undefined method 'a' for{"a"=>value1,"b"=>value2}:Hash
//value1, value2 are valid data
Please let me know whats wrong with this.
Hi ,
I have created an array of hashes using
Model file class
Class A < ActiveRecord::Base
def fill_paths
paths = Array.new
for file in @files
path = {}
path["a"] = file
path["b"] = DATA2(assume data2 is valid)
paths << path
end
return paths
end
in controller class
@paths = A.fill_paths
for path in @paths
puts path.a
end
I cant access path.a, which says
"undefined method 'a' for{"a"=>value1,"b"=>value2}:Hash
//value1, value2 are valid data
path['a'] is the correct syntax for accessing hashes.
11155
(-- --)
June 5, 2012, 6:19pm
3
Jeremy W. wrote in post #1063195:
They are "class objects" - hashes are instances of Hash class ...
Jeremy W. wrote in post #1063195:
for file in @files
@paths = A.fill_paths
for path in @paths
puts path.a
end
I cant access path.a, which says
"undefined method ‘a’ for{“a”=>value1,“b”=>value2}:Hash
//value1, value2 are valid data
path[‘a’] is the correct syntax for accessing hashes.
Yah i get it. I wanted to convert this array of hash into an array of
class objects. How do i do that in ruby?
Yes, you can. This is your program, refactored to do that (I’ve not tested it so excuse any typos):
class Data
attr_reader :a, :b
def initialize(a, b)
@a = a
@b = b
end
end
class A < ActiveRecord::Base
def fill_paths
@files.map |file|
Data.new(file, data_2(‘assume data2 is valid’))
end
end
end
#Controller
@paths = A.fill_paths
@paths.each do |path|
puts path.a
end
11155
(-- --)
June 5, 2012, 6:41pm
6
Michael Pavling wrote in post #1063197:
Yah i get it. I wanted to convert this array of hash into an array of
class objects. How do i do that in ruby?
They are "class objects" - hashes are instances of Hash class ...
In the index.html.erb file the following code doesnt work,
paths contain valid data populated in the controller class.
<% @paths.each do |path| %>
<tr>
<td><%= path.a %></td>
-- Since paths is an array of hash path['a'] should work
It says undefined method 'a' for {"a"=>".", "b"=>"."}:Hash
Changing path.a to path['a'] gives me an error
"No route matches {:a=>".", :b=>".", :action=>"edit",
:controller=>"file_paths"}"
Note: . is a valid data (referring to a path in a dir)
11155
(-- --)
June 5, 2012, 10:01pm
7
Hi Jeremy,
Thanks for the reply.
I want to populate my DB during init one time by crawling through a set
of directories with filenames and paths. How do i do this?
Hi Jeremy,
Thanks for the reply.
I want to populate my DB during init one time by crawling through a set
of directories with filenames and paths. How do i do this?
Where, or how?
Where: db/seeds.rb
How: Iterate through directories (read the Dir/File/Path classes’ documentation) and create a record in the database for each. If either of those steps seem too complex then you need to read some tutorials on Ruby (for the first bit) and Rails (for the later).