Каждых парциальный также имеет локальную переменный с тем же именем, что и частичного (минус подчеркивания). Вы можете передать объект в этой локальных переменный с помощью опция: объект:
<%= render partial: "customer", object: @new_customer %>
В клиенте частичного, переменная клиент будет относиться к @new_customer от родительского вида. (Ранее руководство указывает, что для указания других параметров для render(), например объекта:, вы должны явно указать partial:
и имя частичного.)
Если у вас есть экземпляр модели для рендеринга в частичную вы можете использовать сокращенный синтаксис:
<%= render @customer %>
Если предположить, что @customer переменная экземпляра содержит экземпляр Образцовый клиент, это будет использовать _customer.html.erb, чтобы сделать его и передаст локальную переменную клиент в части, которая будет , ссылается на переменную экземпляра @customer в родительском представлении.
3.4.5 Рендеринг Коллекции
Частицы очень полезны при рендеринге коллекций. Когда вы передаете коллекцию частично через: вариант сбора, парциальное будет вставляться один раз для каждого элемента в коллекции:
index.html.erb:
<h1>Products</h1>
<%= render partial: "product", collection: @products %>
_product.html. ERB:
<p>Product Name: <%= product.name %></p>
при частичном вызываются с множественной коллекцией, то отдельных случаи частичными имеют доступ к члену коллекции Bei ng, отображаемый через переменную, названную после частичного. В этот случай, частичный _product, а в части _product, , вы можете обратиться к продукту, чтобы получить экземпляр, который визуализируется.
Существует также сокращение от этого. Предполагая, что @products коллекция экземпляров продукта, вы можете просто написать это в index.html.erb для получения того же результата:
<h1>Products</h1>
<%= render @products %>
Rails определяет имя частичного использования, глядя на название модели в коллекции. На самом деле, вы можете даже создать гетерогенную коллекцию и сделать это таким образом, и Rails будет выбирать надлежащее парциальное для каждого члена коллекции:
index.html.erb:
<h1>Contacts</h1>
<%= render [customer1, employee1, customer2, employee2] %>
клиентов /_customer.html.erb:
<p>Customer: <%= customer.name %></p>
сотрудников/_employee.html.erb:
<p>Employee: <%= employee.name %></p>
В этом случае Rails будет использовать частичные данные клиента или сотрудника как , соответствующие каждому члену коллекции.
В случае, если коллекция пуста, рендер будет возвращать нуль, поэтому должно быть довольно просто предоставить альтернативный контент.
<h1>Products</h1>
<%= render(@products) || "There are no products available." %>