I do this:
<% some_local = default_value if local_assigns[:some_local].nil? %>
Since local_assigns
is a hash, you could also use fetch with the optional default_value
.
local_assigns.fetch :foo, default_value
This will return default_value
if foo
wasn't set.
WARNING:
Be careful with local_assigns.fetch :foo, default_value
when default_value
is a method, as it will be called anyway in order to pass its result to fetch
.
If your default_value
is a method, you can wrap it in a block: local_assigns.fetch(:foo) { default_value }
to prevent its call when it's not needed.
How about
<% foo ||= default_value %>
This says "use foo
if it is not nil or true. Otherwise assign default_value
to foo"
I think this should be repeated here (from http://api.rubyonrails.org/classes/ActionView/Base.html):
If you need to find out whether a certain local variable has been assigned a value in a particular render call, you need to use the following pattern:
<% if local_assigns.has_key? :headline %>
Headline: <%= headline %>
<% end %>
Testing using defined? headline will not work. This is an implementation restriction.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With