2012-05-02 2 views
0

В приложении Rails у меня есть index.html.erb и контроллер posts_controller.rb. В контроллере я определил переменную:Просмотр внутри другого вида

def index 
@posts = TableName.find... 

и с точки зрения у меня есть:

<% @posts.each do |post| %> 

Если я к нему доступ через локальный/сообщений/индекса он работает отлично. Но я действительно хочу показать это представление внутри других представлений, поэтому я использую <%= render :template => 'posts/index' %>, но я получаю это сообщение об ошибке: «NoMethodError - у вас есть объект nil, если вы этого не ожидали! Возможно, вы ожидали экземпляр массива Ошибка произошла при оценке nil.each «

Как это сделать? Спасибо

ответ

2

NoMethodError запускается при попытке вызова методов на неопределенный объект. Другими словами, вы публикуете сообщения/индекс в других представлениях, но переменная экземпляра @posts не определена в другом представлении. Шаблон рендеринга не маршрутизирует контроллер.

+0

Я уже знал это. Я хочу знать, как это сделать. Спасибо – notGeek

+0

Вы должны определить '@ posts' в каждом действии контроллера, который отображает шаблон с шаблоном' posts/index'. – Mischa

+0

Нет ли лучшего варианта отображения вида внутри другого? благодаря – notGeek

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