Je suis le didacticiel Ruby on Rails et j'ai rencontré un problème en essayant de transmettre des variables aux partiels.
Mon _user
partiel est le suivant
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
Je voudrais passer un nombre pour la valeur de la taille. J'essaye comme suit sans aucune chance.
<%= render @users, :locals => {:size => 30} %>
ruby-on-rails
dopplesoldner
la source
la source
locals
hachage pour utiliser la version courte comme suit:<%= render @users, size: 30 %>
Depuis l'API Rails sur PartialRender :
Exemples:
Ainsi, vous pouvez utiliser passer une variable locale
size
pour effectuer le rendu comme suit:puis utilisez-le dans le
_user.html.erb
partiel:Notez que cela
size: size
équivaut à:size => size
.la source
Soit
Ou
Pour l'utiliser
locals
, vous avez besoinpartial
. Sans l'partial
argument, vous pouvez simplement lister les variables directement (pas à l'intérieurlocals
)la source
Ne pas utiliser
locals
dans Rails 4.2+Dans Rails 4.2, j'ai dû retirer la
locals
pièce et simplement utilisersize: 30
place. Sinon, il ne passerait pas correctement la variable locale.Par exemple, utilisez ceci:
la source
Si vous utilisez JavaScript pour le rendu, utilisez
escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");
la source
Syntaxiquement un peu différent mais cela semble plus propre à mon avis:
la source
Vous êtes capable de créer des variables locales une fois que vous appelez la fonction de rendu sur un partiel, donc si vous souhaitez personnaliser un partiel vous pouvez par exemple rendre le partiel
_form.html.erb
en:de cette façon, vous pouvez accéder dans le partiel à l'étiquette pour le bouton et l'URL, ceux-ci sont différents si vous essayez de créer ou de mettre à jour un enregistrement. enfin, pour accéder à ces variables locales, vous devez mettre votre code
local_assigns[:button_label]
(local_assigns[:name_of_your_variable]
)la source