Actually, on second thought, this would do exactly what you wanted, and It's Just Ruby (tm):
<% account.users.any? && account.users.tap do |users| %> # ... <% end %> On Fri, Jan 25, 2013 at 2:09 PM, Ngan <[email protected]> wrote: > Thank you Godfrey! This does solve 99% of my cases! > > @Andrew Using if, the variable "users" is now available everywhere...I > only want it available in my block. > > > On Friday, January 25, 2013 2:05:31 PM UTC-8, Godfrey Chan wrote: > >> Object#try takes a block. It'll probably take care of most simple cases >> for you: >> >> <% account.owner.try do |user| %> >> <!-- This is shown only if account.owner is not nil? --> >> <% end %> >> >> >> >> On Fri, Jan 25, 2013 at 1:17 PM, Ngan <[email protected]> wrote: >> >>> I originally brought this up in: https://github.com/rails/** >>> rails/issues/9067 <https://github.com/rails/rails/issues/9067> >>> >>> Rails paved the way for Object#tap and Object#try.**..I'd like to >>> propose Object#tap_if and its counterpart,Object#tap_unless. >>> >>> I've been following 37signals conventions of tapping variables in the >>> views: >>> >>> <% account.owner.tap do |user| %> >>> ... >>> <% end %> >>> >>> But, I find myself having to do this a lot... >>> >>> <% account.owner.tap do |user| %> >>> <% if user %> >>> ... >>> <% end %> >>> <% end %> >>> >>> It would be great if we could do... >>> >>> <% account.owner.tap_if(:present?**) do |user| %> >>> ... >>> <% end %> >>> >>> <% account.users.tap_if(:any?) do |user| %> >>> ... >>> <% end %> >>> >>> The block would only yield if the method evals to true. >>> Carlos mentioned that you can add an "if account.owner.present?" at the >>> end... >>> But there are times when the account.owner (or something else) call is >>> expensive and you don't want to call it twice. >>> >>> Any feedback would be much appreciated. Thanks! >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ruby on Rails: Core" group. >>> To post to this group, send email to rubyonra...@googlegroups.**com. >>> To unsubscribe from this group, send email to rubyonrails-co...@** >>> googlegroups.com. >>> >>> Visit this group at http://groups.google.com/** >>> group/rubyonrails-core?hl=en<http://groups.google.com/group/rubyonrails-core?hl=en> >>> . >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>> . >>> >>> >>> >> >> -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Core" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
