[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

conditional variable assignment from array

Josselin

1/22/2007 8:57:00 AM

one of my methods receives a sort parameter either as

params => {"sort"=>{"criteria"=>"1"} }
OR
params => {"sort"=>"1"}

presently, I assign a variable @sc as follows :

params[:sort].nil? ? @sc = "1" : @sc = params[:sort][:criteria]

how can I assign @sc to params[:sort][:criteria] OR params[:sort]
whatever received... ?

tfyh

joss

3 Answers

Peter Szinek

1/22/2007 9:10:00 AM

0

Josselin wrote:
> one of my methods receives a sort parameter either as
>
> params => {"sort"=>{"criteria"=>"1"} }
> OR
> params => {"sort"=>"1"}
>
> presently, I assign a variable @sc as follows :
>
> params[:sort].nil? ? @sc = "1" : @sc = params[:sort][:criteria]
>
> how can I assign @sc to params[:sort][:criteria] OR params[:sort]
> whatever received... ?

You could try something like

stuff = params[:sort]
@sc = stuff.is_a? String ? stuff : stuff[:criteria] unless stuff == nil

Maybe I did not understand your question properly, if this does not seem
to work, please try to elaborate...

Peter

__
http://www.rubyra...



Robert Klemme

1/22/2007 9:59:00 AM

0

On 22.01.2007 09:57, Josselin wrote:
> one of my methods receives a sort parameter either as
>
> params => {"sort"=>{"criteria"=>"1"} }
> OR
> params => {"sort"=>"1"}
>
> presently, I assign a variable @sc as follows :
>
> params[:sort].nil? ? @sc = "1" : @sc = params[:sort][:criteria]
>
> how can I assign @sc to params[:sort][:criteria] OR params[:sort]
> whatever received... ?

First of all you cannot mix symbol and string keys, i.e. you cannot use
a symbol to retrieve a string key:

irb(main):001:0> h={"sort"=>1}
=> {"sort"=>1}
irb(main):002:0> h[:sort]
=> nil

Maybe you want something like this:

tmp = params["sort"]
@sc = Hash === tmp ? tmp["criteria"] : tmp

Cheers

robert

William James

1/22/2007 10:38:00 AM

0

Josselin wrote:
> one of my methods receives a sort parameter either as
>
> params => {"sort"=>{"criteria"=>"1"} }
> OR
> params => {"sort"=>"1"}
>
> presently, I assign a variable @sc as follows :
>
> params[:sort].nil? ? @sc = "1" : @sc = params[:sort][:criteria]
>
> how can I assign @sc to params[:sort][:criteria] OR params[:sort]
> whatever received... ?
>
> tfyh
>
> joss

h = {"sort"=>{"criteria"=>{"criterion"=>{"foo"=>"1"}}}}
# Get the innermost value.
while (h = h.to_a.flatten.last).class == Hash do end
p h