【问题标题】:how to render collection from home page in rails 3.12如何在rails 3.12中从主页呈现集合
【发布时间】:2013-03-29 02:58:30
【问题描述】:

在 Rails 中,我将有一个用于具有索引、显示和 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 中的 home 操作:

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

【问题讨论】:

  • 您是否尝试过覆盖默认的炼油厂控制器并添加自定义路由
  • 我正在覆盖位于 app>controllers>refinery 目录中的默认 pages_controller.rb。我所做的唯一改变是在 home 动作中。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多