Re: Re: rendering a partial with an array as its :object

Prem Sichanugrist
Thu, 28 Oct 2010 14:30:58 -0000

Can you create a ticket and assign to me. I''ll have a look on it.

Thank you :)

On 28 ต.ค. 2553, at 21:08, Antonio Tapiador del Dujo wrote:

> I suffered this. I was very annoyed because Rails was rendering nothing.
Then I
> realized I was passing an empty array and I remembered this issue!
>
> +1
>
> El Sábado, 23 de Octubre de 2010 23:05:06 Eugene M. Magdel escribió:
>> Had the same problem! Thanks for reporting!
>>
>> On Sep 30, 1:28 pm, James MacAulay <jmacau...@gmail.com> wrote:
>>> This code does not work the same way as it did in 2.x:
>>>
>>> render :partial => "things", :object =>
[''foo'', ''bar'', ''baz'']
>>>
>>> In 2.x, the "things" partial would be rendered once with
a local
>>> variable called "things" storing the given array.
>>>
>>> In 3.0.0 (and edge), the Action View assumes that you really
>>> meant :collection => [''foo'',
''bar'', ''baz''], so it iterates through the
>>> array and renders the partial once with each element. It will do
this
>>> for any object which responds to to_ary.
>>>
>>> I really think this is a case of Rails being too clever for its own
>>> good. The difference in behaviour between the :object and
:collection
>>> options is large enough that this makes for a big break in
>>> expectations. If someone wants the :collection behaviour, they
should
>>> use :collection.
>>>
>>> (FWIW, an easy workaround is to pass the array into :locals, which
>>> people should probably be doing for arrays 99% of the time anyway,
but
>>> silently assuming they meant :collection is not the way to
encourage
>>> that behaviour.)
>>>
>>> The relevant change to the code is more than a year old now (commit
>>> d0301e1) but I couldn''t find any discussion about the
change and the
>>> tests don''t seem to assert anything about it either way.
If it''s
>>> really the behaviour we want, then it should be tested and
documented.
>>> I can make a patch in either case.
>>>
>>> -James
>
> --
> 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 rubyonrails-core@googlegroups.com.
> To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com.
> For more options, visit this group at