2014-09-03 2 views
0

Я рендеринг частично от просмотра оферты:рельсов частичного рендеринга дают неопределенные методы ноля: NilClass

<%= render partial: 'parent_offers_table', locals: { :parent_offers => [offer.parent_offer] } %> 

А потом, в _parent_offers_table:

<%= render partial: 'parent_offer', collection: parent_offers %> 

Однако в _parent_offer я не могу делать что-либо с переменной parent_offer. Я получаю неопределенные методы ноля: NilClass:

<tr> 
    <td><%= parent_offer.created_at %></td> 
    <td><%= parent_offer.version %></td> 
    <td><%= parent_offer.client.try(:name) %></td> 
    <td> 
    ............ 

Что я делаю неправильно? Спасибо!

ответ

1

вместо:

<%= render partial: 'parent_offer', collection: parent_offers %> 

попробовать:

<%= render partial: 'parent_offer', locals: {parent_offers: parent_offers} %> 

или:

<%= render 'parent_offer', parent_offers: parent_offers %> 
+1

Кроме того, вы должны убедиться, что имя переменной, используемое в частичном, соответствует 'model_name' коллекции, которую вы хотите отобразить. –

+0

@ IS04 с этими двумя решениями Теперь я получаю неопределенную локальную переменную или метод 'parent_offer ' –

+0

(исправлено), если вам нужно' parent_offers' просто изменить 'collection' на него – IS04

1

Коллекция

<%= render partial: "parent_offer", collection: parent_offers, as: :parent_offer %> 

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

Если вы звоните собственное имя объекта, вы будете лучше всего use the as: argument определить локальные переменный:

Чтобы использовать пользовательский локальное переменное имя в парциальном укажите : в качестве опции в вызове парциальное:

<%= render partial: "product", collection: @products, as: :item %>

с этим изменением, вы можете получить доступ к экземпляру в @products коллекции в качестве элемента локальной переменной в пределах парциальное.

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