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
@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
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?
The || operator works beautifully in this kind of situation:
@limit = @params["limit"] || 50
chain = @params["chain"] || 1
Thanks,
Chris
- Jamis
···
--
Jamis Buck
jgb3@email.byu.edu
http://www.jamisbuck.org/jamis
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.