2013-11-02 2 views
5

Я следую за Agile Web Development с Rails 4 book, и я немного запутался в части об рендеринге. Простой вариант вопроса ... в файле application.html.erb там говоритРедактирование экземпляра Rails из приложения.html.erb

render @cart 

Это сбивает с толку, потому что я думал, что там должно было быть контроллер, связанный с этой точки зрения для того, чтобы знать, какие частичную и переменную @cart. Это просто по соглашению об именах, что эта строка ищет частичную, например _cart.html.erb? И в этом случае действительно ли он не знает, что такое @cart, пока он не отобразит это частичное?

Некоторое уточнение было бы прекрасным. Благодаря!

+0

http://api.rubyonrails.org/classes/ActionView/PartialRenderer.html. Отличный ресурс для тех, кто изо всех сил пытается найти краткую информацию по этой теме. Также объясняются другие понятия, связанные с передачей переменных экземпляра как частичных. – the12

ответ

6

Это сокращенный синтаксис. From the docs:

Каждая частичная также имеет локальную переменную с тем же именем, что и частичное (минус подчеркивание). Вы можете передать объект в эту локальную переменную с помощью опция: объект:

<%= render partial: "customer", object: @new_customer %> 

Within клиента частичной, переменная клиент будет относиться к @new_customer от родительского вида.

Если у вас есть экземпляр модели для визуализации в частичном, вы можете использовать сокращенный синтаксис:

<%= render @customer %> 

Если предположить, что @customer переменной экземпляры содержит экземпляр модели клиента, это будет использовать _customer.html.erb, чтобы отобразить его и передать локального клиента переменной в частичное, которое будет ссылаться на переменную экземпляра @customer в родительском представлении.

+0

, так что если в модели есть клиент: вы можете пользовательский рендеринг @customer, и он не передает никакой информации и просто ищет частичного имени _customer? – natecraft1

+0

он ищет частично именуемый _customer, а также передает переменную экземпляра с именем '@ customer', которая определяется из родительского представления. В первом примере в моем ответе они показывают, как передать в другую переменную экземпляра '@ new_customer', но если у вас есть переменная экземпляра с тем же именем, вы можете использовать сокращенное обозначение. –

+0

, но в application.html.erb нет родительского представления, не так ли? – natecraft1

Смежные вопросы