1

在 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 方法。如果我用上面的代码覆盖炼油厂 pages_controller.rb 中的 home 操作,我会收到错误

未初始化的常量 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 应用程序可以做到这一点并且它可以工作,但我想知道如何在炼油厂中做到这一点,因为弄清楚这一点将为我打开世界。有人可以建议或指出一些我可能忽略的文档,这些文档会有所帮助。

编辑 这是位于 app>controllers>refinery 目录中的 pages_controller.rb 中的主操作:

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

1 回答 1

0

Refinery CMS 使用复数模型名称命名其引擎名称空间。然后它将引擎名称空间嵌套在 Refinery 名称空间中。因此,在主应用程序结构的视图中查询所有小部件的正确方法是

@widgets = Refinery::Widgets::Widget.all
于 2013-03-29T15:05:27.610 回答