Dans le Guide des rails, un partiel est construit sous le nom "app / views / comments / _comment .html.erb "et en plaçant le code ci-dessous dans la vue show de l'article, Rails sait parcourir chaque commentaire et utiliser le partiel correct. Comment le sait-il? J'ai essayé de changer le nom partiel en autre chose que la forme singulière de commentaire et cela n'a pas fonctionné. Est-ce un type de magie Rails que je devrais mémoriser ou y a-t-il une explication?

<%= render @article.comments %>

J'ai aussi essayé de rendre 'comments/comment' à la place et cela ne fonctionne pas, mais pourquoi 'comments/form' fonctionnerait-il plus tard dans le guide?

0
stackjlei 17 janv. 2017 à 08:55

2 réponses

Meilleure réponse

À partir de la documentation:

Les partiels sont très utiles pour le rendu des collections. Lorsque vous passez une collection à un partiel via l'option: collection, le partiel sera inséré une fois pour chaque membre de la collection:

Dans votre exemple, <%= render @article.comments %> est un raccourci pour écrire <%= render partial: "comment", collection: @article.comments %>

1
Shannon 17 janv. 2017 à 06:19

C'est un peu un raccourci utilisant la convention Rails.

C'est une longue forme d'écriture de la même chose.

<% @article.comments.each do |comment| %>
  <%= render partial: 'comment', locals: { comment: comment } %>
<% end %>

Vous pouvez également utiliser des collections dans vos rendus.

<%= render partial: 'comment', collection: @article.comments %>

Vous pouvez en lire un peu plus sur les options du guide;

Layouts et rendu

Et la documentation pour la mise en œuvre ici;

Rendu partiel

2
Hass 17 janv. 2017 à 06:12