[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

How to pass a hash into a function

Mark Mr

2/14/2008 9:33:00 PM

Hi, I have a hash and i need to pass it to a function in another
controller. Here's what I have to do that

<%= link_to 'View', :controller => :attempts, :action => :show_cbam, :id
=> a.code, :percentiles =>@percentile_hash%>

where @percentile_hash is the hash I have. Then I call it in the other
controller like this

def show_cbam

@percentiles = params[:percentiles]

This seems to work ok, i can see the hash in my view but it doesnt work
properly.
Here's an example of my hash

@percentiles = {1=>[88,99,100]}

When i call @percentiles it outputs 18899100 so it seems fine but when i
call @percentiles[1] it returns 54. I have no idea why, it should return
the array [88,99,100]. Furthermore, for values like @percentiles[2]
it'll return like 55 even though there is no value associated with 2.
does anyone understand why this is happening? thank you :)
--
Posted via http://www.ruby-....

4 Answers

7stud --

2/14/2008 10:02:00 PM

0

h = {1=>[88, 99, 100]}

def show(a_hash)
puts a_hash[1]
end

show(h)

--output:--
88
99
100
--
Posted via http://www.ruby-....

Mark Mr

2/14/2008 10:19:00 PM

0

7stud -- wrote:
> h = {1=>[88, 99, 100]}
>
> def show(a_hash)
> puts a_hash[1]
> end
>
> show(h)
>
> --output:--
> 88
> 99
> 100


yeah, im not doing standard ruby like that, I'm doing it through html so
I think it's getting screwed up in that process. I'm just going to
calculate the hash in the other controller instead and try that.
--
Posted via http://www.ruby-....

Christopher Dicely

2/15/2008 2:57:00 AM

0

On Thu, Feb 14, 2008 at 1:32 PM, Mark Mr <pimea.mark@gmail.com> wrote:
> Hi, I have a hash and i need to pass it to a function in another
> controller. Here's what I have to do that
>
> <%= link_to 'View', :controller => :attempts, :action => :show_cbam, :id
> => a.code, :percentiles =>@percentile_hash%>
>
> where @percentile_hash is the hash I have. Then I call it in the other
> controller like this
>
> def show_cbam
>
> @percentiles = params[:percentiles]
>
> This seems to work ok, i can see the hash in my view but it doesnt work
> properly.
> Here's an example of my hash
>
> @percentiles = {1=>[88,99,100]}
>
> When i call @percentiles it outputs 18899100 so it seems fine but when i
> call @percentiles[1] it returns 54. I have no idea why, it should return
> the array [88,99,100]. Furthermore, for values like @percentiles[2]
> it'll return like 55 even though there is no value associated with 2.
> does anyone understand why this is happening? thank you :)


Are you sure those are the EXACT numbers you are getting? Because it
sounds like you might be getting the string "18899100" rather than the
hash, which would give numbers close to that but not exactly. E.g.:

irb(main):004:0> "18899100"[1]
=> 56
irb(main):005:0> "18899100"[2]
=> 56
irb(main):006:0> "18899100"[3]
=> 57
irb(main):007:0> "18899100"[0]
=> 49

7stud --

2/15/2008 5:10:00 AM

0

Mark Mr wrote:
>
> yeah, im not doing standard ruby like that
>

Then why would you post your question in a standard ruby forum?
--
Posted via http://www.ruby-....