Как сделать коллекцию с домашней страницы в рельсах 3.12
В rails у меня был бы контроллер для виджетов с методами index, show и crud.
контроллер индекса будет иметь простой
@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. Если я переопределю действие home в 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, которое делает то же самое, и оно работает, но я хотел бы знать, как это сделать на нефтеперерабатывающем заводе, потому что выяснение этого откроет мне мир. Может ли кто-нибудь посоветовать или указать на какую-то документацию, которую я мог упустить из виду?
РЕДАКТИРОВАТЬ Это домашнее действие в моем pages_controller.rb, расположенном в app> controllers> refinery directory:
def home
@widgets = Widget.all
respond_to do |format|
format.html
format.json { render json: @widgets}
end
#render_with_templates?
end
1 ответ
Refinery CMS называет свои пространства имен двигателя множественным именем модели. Затем он вкладывает пространства имен двигателя в пространство имен НПЗ. Таким образом, правильный способ запроса всех моих виджетов в представлении в основной структуре приложения
@widgets = Refinery::Widgets::Widget.all