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 Gonaboina 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

* Hema <hema.solivar@gmail.com> [2008-11-24 21:49:34 -0800]:

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}]

(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?

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?

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