How to append the two hashes in ruby on rails

Hi All,
I need to add the hashes is there any way to add

actually my data is in the given format
data = [ {“first” => 1 ,“second” => 2},
{“first” => 2 ,“second” => 3},
{“first” => 3 ,“second” => 4} ]

I want to acheive it through the loop So, I took 2 hashes as

result = Hash.new
data = Hash.new

for k in 1…4 do
data = {“first”=>k , “second”=>k+1}
result = result,data
end

in the above the result variable

result = [[[[{}, [{“first”=>1, “second”=>2}]], [{“first”=>2,
“second”=>3}]], [{“first”=>3, “second”=>4}]], [{“first”=>4,
“second”=>5}]]

But my Output should be as
result = [{“first”=>1, “second”=>2}, {“first”=>2, “second”=>3},
{“first”=>3, “second”=>4}, {“first”=>4, “second”=>5}]

I tried with the merge,update but those are updating or the changing
the existing the feilds… the not appending

How can I achieve the output if any help you can save my day…
Thanks

i thnk this url will help u try this

http://snippets.dzone.com/posts/show/1535

Hema G. wrote:

Hi All,
I need to add the hashes is there any way to add

actually my data is in the given format
data = [ {“first” => 1 ,“second” => 2},
{“first” => 2 ,“second” => 3},
{“first” => 3 ,“second” => 4} ]

I want to acheive it through the loop So,

Perhaps like this :

data = []
for k in 1…4 do
data[k-1] = {“first”=>k , “second”=>k+1}
end

HTH

I want to acheive it through the loop So, I took 2 hashes as
in the above the result variable

result = [[[[{}, [{“first”=>1, “second”=>2}]], [{“first”=>2,
“second”=>3}]], [{“first”=>3, “second”=>4}]], [{“first”=>4,
“second”=>5}]]

But my Output should be as
result = [{“first”=>1, “second”=>2}, {“first”=>2, “second”=>3},
{“first”=>3, “second”=>4}, {“first”=>4, “second”=>5}]

(1…4).inject([]){|result,i| result << {“first” => i, “second” => i+1}}

Hema, to be honest, I’m not really sure what exactly you want to
achieve, but maybe you can try this:

result = Array.new

for k in 1…4 do
result << {“first” => k , “second”=> k + 1}
end

The result is:

[{“second”=>2, “first”=>1}, {“second”=>3, “first”=>2}, {“second”=>4,
“first”=>3}, {“second”=>5, “first”=>4}]

As far as I know there is no easy way to sort the elements of the
inner hashes, but that shouldn’t raise any problem.

Let me know it this works for you.

Hi ,

I need to acheive the result to be as

result = [{“first”=>1, “second”=>2}, {“first”=>2, “second”=>3},
{“first”=>3, “second”=>4}, {“first”=>4, “second”=>5}]

since this hash is the PDF::SimpleTable.data format

the table data accepts the hash values with the keys as columns and
the values as the table rows
In this case i have to create the report from the database records I
have the Array of employee objects with the fields
I need to put them in table format so that first I have to make the
column names as the table column headings and then need to form a row
of values

For example my ‘employees’ contains the employee object
then, each object has to become one value in the hash

data = Hash.new
result = Hash.new
for employees.each do |record|

data = {“Sno” =>
record.sno, Here
i have one record
“UserName” => record.username,
“designation” => record.designation,
“salary” => record.salary }

result = data,result

end

I want result should be in the following format
result = [{“Sno” => 1,“UserName” => “ppp”,“designation” =>
“se”,“salary” => 10000},{“Sno” => 2,“UserName” => “xxx”,“designation”
=> “se”,“salary” => 10000},{“Sno” => 3,“UserName” =>
“yyy”,“designation” => “se”,“salary” => 10000},{“Sno” => 4,“UserName”
=> “zzz”,“designation” => “se”,“salary” => 10000}]

then I could replace the table data

table.data.replace result
table.render_on(pdf)

But I am not getting the required format? How to achieve that?

Think in terms of the domain. What you need is an array of hashes.
Each hash is a representation of your domain object (employee record)

employees.collect {|employee| employee.attributes}

Thats it.

If there are any particular attributes that you don’t want, e.g.
created_at, then use something like

employees.collect {|employee| employee.attributes.except(:created_at)}

Means I can get the hashes as
Result = Hash.new
Result = employees.collect {|employee| employee.attributes}
then the result contails the array of hashes?

Hi ,

I need to acheive the result to be as

result = [{“first”=>1, “second”=>2}, {“first”=>2, “second”=>3},
{“first”=>3, “second”=>4}, {“first”=>4, “second”=>5}]

since this hash is the PDF::SimpleTable.data format

the table data accepts the hash values with the keys as columns and
the values as the table rows
In this case i have to create the report from the database records I
have the Array of employee objects with the fields
I need to put them in table format so that first I have to make the
column names as the table column headings and then need to form a row
of values

For example my ‘employees’ contains the employee object
then, each object has to become one value in the hash

data = Hash.new
result = Hash.new
for employees.each do |record|

data = {“Sno” =>
record.sno, Here
i have one record
“UserName” => record.username,
“designation” => record.designation,
“salary” => record.salary }

result = data,result

end

I want result should be in the following format
result = [{“Sno” => 1,“UserName” => “ppp”,“designation” =>
“se”,“salary” => 10000},{“Sno” => 2,“UserName” => “xxx”,“designation”
=> “se”,“salary” => 10000},{“Sno” => 3,“UserName” =>
“yyy”,“designation” => “se”,“salary” => 10000},{“Sno” => 4,“UserName”
=> “zzz”,“designation” => “se”,“salary” => 10000}]

then I could replace the table data

table.data.replace result
table.render_on(pdf)

But I am not getting the required format? How to achieve that?

On Nov 25, 2:15 pm, Francois Beuraud <rails-mailing-l…@andreas-

That’s great it worked fine
But I have another problem,

please check the code

Fields = Array.new
Fields [0] = “sno”
Fields [1] = “username”
Fields [2] = “designation”
Fields [3] = “salary”
Fields [4] = “dob”
Fields [5] = “email”
Fields [6] = “doj”

These are the fields of the object ‘Employee’

The Employees array contains of the set of employee objects…

I need to have the array of hashes as [{employee_record1},
{employee_record2}… n records]

For this i tried as the…

result = []

for employee in Employees
res = {}
for field in fields
res << { field => employee.send(field)}
end
result << res
end

But it is not working… Please Help me Thank You

That’s great it worked fine
But I have another problem,

please check the code

Fields = Array.new
Fields [0] = “sno”
Fields [1] = “username”
Fields [2] = “designation”
Fields [3] = “salary”
Fields [4] = “dob”
Fields [5] = “email”
Fields [6] = “doj”

These are the fields of the object ‘Employee’

The Employees array contains of the set of employee objects…

I need to have the array of hashes as [{employee_record1},
{employee_record2}… n records]

For this i tried as the…

result = []

for employee in Employees
res = {}
for field in fields
res << { field => employee.send(field)}
end
result << res
end

But it is not working… Please Help me Thank You

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs