如何在rails 3.12中从主页渲染集合

时间:2013-03-29 02:58:30

标签: ruby ruby-on-rails-3 refinerycms refinery

在rails中我会有一个带有索引,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我有一个小部件引擎,这些引擎中的控制器没有标准的索引,显示和crud方法。如果我使用上面的代码覆盖refinery pages_controller.rb中的home操作,我会收到错误

未初始化的常量Refinery :: PagesController :: Widget

我的问题是:如何在我的炼油厂引擎中引用类,以便我可以将它们包含在我的主要应用程序的视图中?

实施例: 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%>

其中小部件和小工具都是炼油厂引擎。我有一个香草导轨应用程序,它做了这件事,它的工作,但我想知道如何在炼油厂做到这一点,因为搞清楚这将打开世界给我。有人可以建议或指出一些我可能忽略的文件,这将有所帮助。

修改 这是位于app&gt; controllers&gt; 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

1 个答案:

答案 0 :(得分:0)

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

@widgets = Refinery::Widgets::Widget.all