How to pass a hash into a function

M

Mark Mr

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 :)
 
7

7stud --

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

def show(a_hash)
puts a_hash[1]
end

show(h)

--output:--
88
99
100
 
M

Mark Mr

7stud said:
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.
 
C

Christopher Dicely

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top