1

Простой пример:Как Rails визуализации находит переменную

index.html.erb:

<% @posts.each do |post| %> 
<%= post.title %> 
<% end %> 

Я рефакторинг это и переместить содержимое в _post.html.erb парциального:

index.html.erb:

<%= render @posts %> 

_post.html.erb:

<%= post.title %> 

Так как Rails передает атрибуты каждого поста без создания блока? В моем указателе index_controller указано только @posts = Post.all.

Я думал, что, возможно, по имени частичного (сообщения), но выглядит как его другое соглашение Rails (множественное и единственное имя). Это?

Большое спасибо за обмен!

ответ

4

Rails определяет имя частичного использования, просматривая имя модели в коллекции. Полный синтаксис для отображения коллекции выглядит следующим образом:

<%= render partial: "post", collection: @posts %> 

Однако есть сокращение для этого:

<%= render @posts %> 

Согласно документации:

Когда парциальное называется с множественная сборка, то отдельные экземпляры частичного доступа имеют доступ к члену коллекции , который визуализируется через переменную, названную после частичного. В этот случай, частичный _post, и внутри части _post вы можете ссылаться на сообщение, чтобы получить экземпляр, который визуализируется.

Вы можете найти подробное объяснение в rails guides