Good day!
Sometimes we want just to render a collection:
render partial: collection: @cars
Sometimes we want to render a collection using custom partial name:
render partial: ''car_short'', collection: @cars
Ok but if Car has has STI-subclasses we should write
class Car < ActiveRecord::Base; def to_partial_path();
"cars/#{kind}"; end;
end
render collection: @cars
But wait! Partial will be ''cars/bmw'',
''cars/mercedes''. But sometimes I want
to render
a collection with ''_short'' postfix. But sometimes without it.
But
''to_partial_path'' is common...
What to do? This brief
article<http://blog.plataformatec.com.br/2012/01/my-five-favorite-hidden-features-in-rails-3-2/>,
4) Custom partial paths, says to do
@cars.each do |car|
render partial: "cars/#{car.kind}_short", locals: { car: car }
end
But this code is... I don''t like to do so, do you?
What about new ''render''''s option? A
''postfix''/''prefix'' options are nice for
this example but...
Another example. Partial name is related to your role for this object
(''owner'', ''admin'', etc.):
@cars.each do |car|
render partial: "#{car.to_partial_path}_#{your_role_for(car)}",
locals: {
car: car }
end
What do you think? Is it a good idea? Thanx.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to rubyonrails-core+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
Alexander Kurakin
2013-Feb-03 10:17 UTC
Re: Rendering collections with custom partial paths
The idea is to make an ability to give a Proc to ''partial''
option. It will
be yielded with ''object'' argument:
render partial: -> { |car|
"#{car.to_partial_path}_#{your_role_for(car)}"
}, collection: @cars
It''s backward compatibility...
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to rubyonrails-core+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.