Render :partial => @object

Running rails 2.1.0 when I do this:

<%= render :partial => ‘style’, :collection => @styles %>

I get the collection fine in my index file. When I try the shortcut:

<%= render :partial @styles %>

I get this error:

Couldn’t find template file for active_record/named_scope/scopes/
_scope

Any ideas??

Add a comma or not?
<%=render :partial, @styles %>

2009/9/20 Me [email protected]

Couldn’t find template file for active_record/named_scope/scopes/
_scope

Any ideas??


Code our future
Name : Wang P.
Nick : QJGui

renders nothing.

<%=render :partial=>@styles %>
the partial html is :
_style.html.erb
and the object can be used in the partial erb is style

2009/9/20 Me [email protected]

I get this error:


Code our future
Name : Wang P.
Nick : QJGui

ya that is what I have.

2009/9/20 Chris H. [email protected]:

renders nothing.

You could use ruby-debug to break into the partial to check it is
getting there. Another thing to do is to check the html produced
(view source in browser) to check that it is in fact generating
nothing, rather than just nothing that displays.

Presumably you have checked that @styles is not empty?

Colin

2009/9/20 Chris H. [email protected]:

Ya if I change it to the normal :collection style syntax it works fine.

Ah, I see, I had misunderstood the problem. Is @styles an array of
Style objects, and are you rendering from the style controller? Where
is _style.html.erb?

What version of Rails are you using? I don’t know what version that
syntax appeared. Anyone?

Colin

Everything is in the styles views directory. rails 2.1.0. I am very
confused as this sytnax is supposed to be supported by rails > 2.0. I
even
tried it in 2.3.2 and the same thing. I watched ryan bates railscasts
about
4 times and I still do not know why it is not working.

This works fine:

<%= render :partial => ‘style’, :collection => @styles %>

Which is even more bewildering.

Ya if I change it to the normal :collection style syntax it works fine.

2009/9/20 Eric [email protected]:

I’ve never seen “render :partial @foo
OP you have changed it to
<%=render :partial=>@styles %>
as pointed out by Wang P.?

Colin

Hi, what version of Rails is being defined within the environment.rb
file?

-Conrad

Is there something I’m not getting here? The short form should be
either

render :partial => @foo

-or-

render @foo

I’ve never seen “render :partial @foo

-eric

2.1.0

Hi,
if you’re using Rails 2.1.0 or earlier, you’ll need to use the following
syntax:

a) render :partial => partial_name, :collection => @collections

 Note:  The above requires the partial, _partial_name.html.erb.

b) render :partial => partial_name, :object => @object

 Note:  The above requires the partial, _partial_name.html.erb.

If you’re using Rails 2.2.2 or greater, then you can use the following
syntax:

a) render :partial => @collections

 Note:  The above uses the partial, _collection.html.erb.

b) render :partial => @object

 Note:  The above used the partial, _object.html.erb.

Good luck,

-Conrad