как отображать коллекцию с домашней страницы в rails 3.12

в rails у меня был бы контроллер для виджетов с методами index, show и crud.
у контроллера index был бы простой

@widgets = Widget.all
respond_to do |format|
  format.html
  format.json {render :json => @widgets}

затем на моей домашней странице или на любой странице в моей основной папке приложений я мог бы сказать

<% @widgets.each do |w| %>
     <p><%= w.name %></p>
<%end%>

В Refinery у меня есть движок виджетов, а контроллеры в этих движках не имеют стандартных методов index, show и crud. Если я переопределяю домашнее действие в файле Refinery pages_controller.rb с помощью приведенного выше кода, я получаю сообщение об ошибке

неинициализированная константа Refinery::PagesController::Widget

Мой вопрос: как я могу ссылаться на классы в своих двигателях нефтепереработки, чтобы я мог включать их в свои представления из моего основного приложения rails?

Пример: app.main.views.index.html.erb

 <h1> this is my home page.  We sell all sorts of stuff including: </h1>

 <% @widgets.each do |w| %>
      <p><%= w.name %></p>
 <%end%>

 <% @gadgets.each do |g| %>
     <p><%= g.name %></p>
 <%end%>

где и виджеты, и гаджеты являются двигателями переработки. У меня есть приложение vanilla rails, которое делает именно это, и оно работает, но я хотел бы знать, как это сделать на нефтеперерабатывающем заводе, потому что выяснение этого откроет для меня мир. Может ли кто-нибудь посоветовать или указать на какую-то документацию, которую я мог упустить из виду, которая поможет.

EDIT Это домашнее действие в моем файле pages_controller.rb, расположенном в каталоге app>controllers>refinery:

 def home
  @widgets = Widget.all
  respond_to do |format|
    format.html
    format.json { render json: @widgets}
  end  
  #render_with_templates?
 end

person rakitin    schedule 29.03.2013    source источник
comment
Пробовали ли вы переопределить контроллеры НПЗ по умолчанию и добавить собственные маршруты?   -  person TheIrishGuy    schedule 29.03.2013
comment
Я переопределяю файл pages_controller.rb по умолчанию, расположенный в каталоге app›controllers›refinery. Единственное изменение, которое я сделал, это домашнее действие.   -  person rakitin    schedule 29.03.2013


Ответы (1)


Refinery CMS называет свои пространства имен движка именем модели во множественном числе. Затем он вкладывает пространства имен движка в пространство имен Refinery. Таким образом, правильный способ запроса всех моих виджетов в представлении в основной структуре приложения:

@widgets = Refinery::Widgets::Widget.all
person rakitin    schedule 29.03.2013