In what is amounting to my most useless post yet – this feature has been reverted according to Bob .
With Rails components being shunned throughout the Rails world we are often left to use a set of view partials to abstract out commonly used display functionality. Sometimes this necessitates the use of variables (called ‘locals’) that may or may not be relevant in all view scenarios. For instance, if I have a partial that I use to display form text fields there may be a size parameter I want to pass in to limit the field’s size:
# my_form.rhtml
<%= render :partial => 'text_field', :locals => {:size => 5} %>
# _text_field.rhtml
<input type="text" size="<%= size %>" />
If I want the size parameter to be optional however, I could try to do this with a default value of 5:
# _text_field.rhtml
<input type="text" size="<%= size ? size : "5" %>" />
However, this fails if no size parameter is passed to the partial as size hasn’t been defined yet. With this update, however, you can query an explicit locals hash to determine the existance of a local variable:
# _text_field.rhtml
<input type="text" size="<%= locals[:size] ? size : "5" %>" />
Not a huge update, but if you’re using partials extensively (which I suspect most are) you’ve no doubt run into this issue.
And as Bojan has pointed out you could also use the nifty defined? method
# _text_field.rhtml
<input type="text" size="<%= defined?(size) ? size : "5" %>" />
tags: rails, rubyonrails
