Отсутствует шаблон при рендеринге коллекции с использованием локальных переменных

У меня есть два ресурса Category и Organization в моем приложении Rails 4. Я борюсь с рендерингом частичных файлов в сочетании с локальными переменными.

У меня есть файл app/views/categories/_category.html.erb:

<li>link_to category.name, category</li>

В app/views/categories/show.html.erb я могу визуализировать этот фрагмент, используя

<%= render @categories %>

Чтобы передать локальную переменную, чтобы выделить текущую категорию в списке полужирным шрифтом, я могу изменить вызов метода на

<%= render partial: "category", collection: @categories, as: :category, locals: {active_category: @category} %>

Все идет нормально! Код делает то, что я от него ожидаю.

Но я сталкиваюсь с проблемами, когда хочу сделать то же самое для моей организации show-view в файле app/views/organizations/show.html.erb. Исходный вызов рендеринга без каких-либо локальных переменных работает нормально, т.е. render @categories. Однако второй вызов дает мне ошибку

Template is missing

Missing partial organizations/_category, application/_category with {
  :locale=>[:en], 
  :formats=>[:html], 
  :variants=>[], 
  :handlers=>[:erb, :builder, :raw, :ruby, :coffee]
}. 

 Searched in: 
   * "/home/snail/.rvm/gems/ruby-2.1.2/gems/web-console-2.0.0.beta4/lib/action_dispatch/templates" 
   * "/home/snail/work/PROJECTNAME/app/views" 
   * "/home/snail/.rvm/gems/ruby-2.1.2/gems/web-console-2.0.0.beta4/app/views" 
   * "/home/snail/.rvm/gems/ruby-2.1.2/gems/devise-3.4.0/app/views"

Почему это так и как это исправить?


person Snail    schedule 24.11.2014    source источник


Ответы (1)


Если вы пытаетесь отрендерить тот же партиал в app/views/categories/_category.html.erb, вам нужно изменить render вызов для show шаблона вашей организации.

render partial: "categories/category", collection: @categories, ...

В противном случае шаблон app/views/organizations/show.html.erb будет искать файл по адресу app/views/organizations/_category.html.erb.

person deefour    schedule 24.11.2014
comment
Вздох, я знаю, что пытался сделать это, но, должно быть, сделал это в виде категории или что-то в этом роде. Во всяком случае, теперь это работает. Спасибо! - person Snail; 25.11.2014