How to pass array of values from controller to partial

Hii

I need to pass an array of vlaues from by controller to the partial.

Please check my action in my controller

def dispfriends
@myfriend=[]
@myfriendlogin = []
@myusers=[]
i=0
@currentgroup = Group.find_by_id(params[:groupid])

puts @currentgroup.id

@currentfriends=
GroupFriend.find_all_by_user_id_and_group_id(current_user.id,@currentgroup.id)

for n in @currentfriends
@myfriend=n.friend_id
@myusers[i] = User.find_by_id(@myfriend)
@myfriendlogin[i]=@myusers[i]
puts @myfriendlogin[i]
i=i+1

end

@myfriendlogin.each do |user|

respond_to do |format|
format.html { render :partial => 'users/dispfriends', :collection =>
@myfriendlogin, :as => :user}
end

end

My Partial

<tr>

  <td class="people_profile">
    <div class="clear_float_effect">
      <%= link_to user_image_tag(user, 50, :class => 'float_left
user_profile_image'), user %>
      <div class="profile_text_details float_left">
        <h5 class="page_heading"><%= hcard_link_to_user user.fullname,
user %></h5>
      </div>
    </div>
  </td>

</tr>

I can only display one user. But, when comes to more than one user I get
"Template missing error".

Please check my action in the controller and help me in this regard.
Thank you.

use like this it will send the @myfriendlogin array to partial
format.html { render :partial => 'users/dispfriends', :locals
=>{ :user=>@myfriendlogin}

Hi Ravi

Ravi Dtv wrote:
@myfriendlogin.each do |user|

respond_to do |format|
format.html { render :partial => 'users/dispfriends', :collection =>
@myfriendlogin, :as => :user}
end

end

Pieter Hugo wrote:

Hi Ravi

Ravi Dtv wrote:
@myfriendlogin.each do |user|

respond_to do |format|
format.html { render :partial => 'users/dispfriends', :collection =>
@myfriendlogin, :as => :user}
end

end

---------------------------
I think your problem is in the above piece of code - A controller can
only respond to a request once. Your code will work if @myfriendlogin
only has one element, but will fail when it has more than one as the
webserver cannot send multiple responses back to the browser.

The ':collection => ' bit will already tell the partial to iterate
through the elements of the collection and apply each element to the
partial, so you dont need to put this into a loop.

If you just want to pass stuff to the partial you might want to look at
':locals =>'

What are you actually trying to achieve?

Thank you for your reply.

I tried with locals, but i get the error.
When i pass collections i get only one user.But, my requirement is to
display all the users in a partial by passing the array form the
controller.

Thankyou.

No.

There's no need to use :locals from the controller. The @myfriendlogin
is passed automagically to the view.
You can use the :collection attribute to let Rails do the iteration
from the controller (not very flexible if you want anything else in
the view), or do it yourself inside the view to render a partial
several times there (see page 119 of the 3rd edition of "Agile Web
Development with Rails").

Michael Pavling wrote:

Ravi Dtv, How did you done it after all?

Thanks