Proposed benefits:
/ * more verbose, but you can see more clearly all the "stuff" your method is using
/ * easier to re-use partials/helpers, since they're not coupled to instance var names
/ * easy to tell what data you need loaded to be able to use a helper/partial
/ top_file.html.haml
= render :partial => 'user'
/ _user.html.haml
= user_full_name_markup
= render :partial => 'user_friend'
/ _user_friend.html.haml
= @friend.name
def user_full_name_markup
@user.last_name, @user.first_name
end
vs
/ top_file.html.haml
render :partial => 'user', :locals => { :user => @user, :friend => @friend }
/ _user.html.haml
= user_full_name_markup(user)
= render :partial => 'user_friend', :locals => { :friend => friend }
/ _user_friend.html.haml
= friend.name
def user_full_name_markup(user)
user.last_name, user.first_name
end