Forum: Ruby on Rails How to append the two hashes in ruby on rails

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
C6b3fb1b16a9878bc793a90bdc1c9799?d=identicon&s=25 Hema Gonaboina (hema_mca)
on 2008-11-25 06:50
(Received via mailing list)
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
Fd1cef91d62d8ef3cdeef3cfc19a98f3?d=identicon&s=25 napster (Guest)
on 2008-11-25 08:45
(Received via mailing list)
i thnk this url will help u try this

http://snippets.dzone.com/posts/show/1535
D5a01968e6f5798f7b0bded8b0b252eb?d=identicon&s=25 Maurice Dubois (legrocha)
on 2008-11-25 10:15
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
8853f712852b03ba6646b59b1723f44d?d=identicon&s=25 Flower Born (flowerborn)
on 2008-11-25 11:08
(Received via mailing list)
* Hema <hema.solivar@gmail.com> [2008-11-24 21:49:34 -0800]:

> 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}}
Fd1cef91d62d8ef3cdeef3cfc19a98f3?d=identicon&s=25 napster (Guest)
on 2008-11-25 11:31
(Received via mailing list)
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.
C6b3fb1b16a9878bc793a90bdc1c9799?d=identicon&s=25 Hema Gonaboina (hema_mca)
on 2008-11-26 07:53
(Received via mailing list)
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?
C6b3fb1b16a9878bc793a90bdc1c9799?d=identicon&s=25 Hema Gonaboina (hema_mca)
on 2008-11-26 07:54
(Received via mailing list)
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-
561319f16a08e221a31d13f4419a7de4?d=identicon&s=25 Pradeep Gatram (pradeepgatram)
on 2008-11-26 08:23
(Received via mailing list)
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)}
C6b3fb1b16a9878bc793a90bdc1c9799?d=identicon&s=25 Hema Gonaboina (hema_mca)
on 2008-11-26 10:27
(Received via mailing list)
Means I can get the hashes as
Result = Hash.new
Result = employees.collect {|employee| employee.attributes}
then the result contails the array of hashes?
C6b3fb1b16a9878bc793a90bdc1c9799?d=identicon&s=25 Hema Gonaboina (hema_mca)
on 2008-11-27 11:16
(Received via mailing list)
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
C6b3fb1b16a9878bc793a90bdc1c9799?d=identicon&s=25 Hema Gonaboina (hema_mca)
on 2008-11-27 11:17
(Received via mailing list)
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 topic is locked and can not be replied to.