[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Newbie question

Williams, Chris

12/3/2004 5:52:00 PM

Hi all,
I'm developing a rails web app here at work and I keep running into
a common thing in terms of setting instance variables with the property of a
form's parameter value. Basically I want the variable to take the
parameter's value if it exists, and to otherwise use a reasonable default.

I keep writing code like this:
if @params["limit"]
@limit = @params["limit"]
else
@limit = 50
end

if @params["chain"]
chain = @params["chain"]
else
chain = 1
end

Can someone please point me to a simpler, more succinct "ruby" way of doing
this?

Thanks,
Chris
2 Answers

Francis Hwang

12/3/2004 5:56:00 PM

0

@limit = @params["limit"] || 50

On Dec 3, 2004, at 12:51 PM, Williams, Chris wrote:

> Hi all,
> I'm developing a rails web app here at work and I keep running into
> a common thing in terms of setting instance variables with the
> property of a
> form's parameter value. Basically I want the variable to take the
> parameter's value if it exists, and to otherwise use a reasonable
> default.
>
> I keep writing code like this:
> if @params["limit"]
> @limit = @params["limit"]
> else
> @limit = 50
> end
>
> if @params["chain"]
> chain = @params["chain"]
> else
> chain = 1
> end
>
> Can someone please point me to a simpler, more succinct "ruby" way of
> doing
> this?
>
> Thanks,
> Chris
>

Francis Hwang
http://f...



Florian Gross

12/3/2004 8:04:00 PM

0

Williams, Chris wrote:

> I keep writing code like this:
> if @params["limit"]
> @limit = @params["limit"]
> else
> @limit = 50
> end
>
> if @params["chain"]
> chain = @params["chain"]
> else
> chain = 1
> end

I'd do something like this

defaults = {
"limit" => 50,
"chain" => 1
# more defaults
}
@values = defaults.merge(@params)

And then do @values["limit"] instead of @limit. This however only makes
sense when there is a logical connection between those values. I'd
prefer it in that case because it is way less duplication.