2014-08-27 2 views
2

Plus précisément, sur une page d'index, vous pourriez avoirRails - valeurs passant dans les boucles

@users.each do |user| 
render 'layouts/shortprofile' 
end 

où le profil court contient des données de l'utilisateur et d'autres modèles connexes.

Le partiel essaie de lire à partir de la méthode d'index dans le modèle utilisateur, mais aucune variable n'est définie dans cette méthode pour un utilisateur individuel. On se sent comme l'utilisateur | bloc var devrait lire dans le partiel, mais il ne semble pas.

Par exemple, dans la partie je pourrais avoir besoin d'avoir quelque chose comme -

user.blogs[1..3].each do |blog| 
    blog.title 
    blog.created_at 
    ..... 

... mais je ne sais pas comment la valeur de l'utilisateur dans la partie.

Je veux le garder comme une partie car il est affiché dans plusieurs contextes et je veux être SEC.

Répondre

3

passer à votre partie en utilisant la variable locale, et assurez-vous de spécifier explicitement partielle:

par exemple/

@users.each do |user| 
render partial: 'layouts/shortprofile', locals: { user: user } 
end 

Plus d'infos ici: http://guides.rubyonrails.org/layouts_and_rendering.html#passing-local-variables

+0

Salut gef - merci pour cela - je l'ai essayé mais j'ai tout gâché - j'ai mis à jour la question en réponse, et je lis les docs. Bravo, Dan – RADan

+0

Hey @RADan vous devez inclure partielle: lors du passage des options supplémentaires. Je viens de mettre à jour la réponse à montrer :) – gef

+1

Merci - c'est génial :) – RADan

0

Vous pouvez changer votre partielle "_user.html.erb" et déplacez-le dans le dossier "views/users" avec votre index, et remplacez le bloc @users.each par:

<%= render @users %> 

... qui devrait passer avec succès chaque objet utilisateur à la variable user dans le partiel.