134 votes

Rails 4 - passer une variable à un partiel

Je suis le tutoriel Ruby on Rails et j'ai rencontré un problème en essayant de passer des variables aux partiels.

Mon _user partielle est la suivante

<li>
  <%= gravatar_for user, size: 52 %>
  <%= link_to user.name, user %>
</li>

Je voudrais passer dans un nombre pour la valeur de la taille. J'essaie de procéder comme suit, mais sans succès.

<%= render @users, :locals => {:size => 30} %>

2voto

Carlos Points 462

Ous êtes en mesure de créer des variables locales une fois que vous appelez la fonction de rendu sur un partiel, donc si vous voulez personnaliser un partiel vous pouvez par exemple rendre le partiel _form.html.erb par :

<%= render 'form', button_label: "Create New Event", url: new_event_url %>
<%= render 'form', button_label: "Update Event", url: edit_event_url %>

De cette façon, vous pouvez accéder dans le partiel à l'étiquette du bouton et à l'URL, qui 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 dans votre code local_assigns[:button_label] ( local_assigns[:name_of_your_variable] )

<%=form_for(@event, url: local_assigns[:url]) do |f|  %>
<%= render 'shared/error_messages_events' %>
<%= f.label :title ,"Title"%>
  <%= f.text_field :title, class: 'form-control'%>
  <%=f.label :date, "Date"%>
  <%=f.date_field :date, class: 'form-control'  %>
  <%=f.label :description, "Description"%>
  <%=f.text_area :description, class: 'form-control'  %>
  <%= f.submit local_assigns[:button_label], class:"btn btn-primary"%>
<%end%>

1voto

Alexander Luna Points 2236

Syntaxiquement, c'est un peu différent, mais à mon avis, c'est plus propre :

render 'my_partial', locals: { title: "My awesome title" }

# not a big fan of the arrow key syntax
render 'my_partial', :locals => { :title => "My awesome title" }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X