【问题标题】:Menu displayed on all pages, code is replicated in all controllers菜单显示在所有页面上,代码在所有控制器中复制
【发布时间】:2011-02-18 20:25:00
【问题描述】:

我有一个收藏模型。我成功地创建了一个_collection.html.erb,我在我的应用程序布局中使用<%= render @collections%> 调用它。

我的问题是在我所有的控制器方法中我必须添加@collections = Collection.all

我发现它非常丑陋,它会让我的收藏范围很难改变,而且我确信我错过了一个更好的轨道魔法。

有没有办法让模型数据生成布局的一部分,而不需要在 AAAALLLLLL 控制器中使用相同的代码?

【问题讨论】:

    标签: ruby-on-rails view controller


    【解决方案1】:

    请注意,您的控制器都继承自 ApplicationController。使用它对您有利。将 before_filter 添加到 ApplicationController 以加载您的收藏。

    【讨论】:

    • 嗯,我的 rails 项目不包含任何名为 ApplicationController 的文件。你的意思是我应该创建某种应用程序控制器类来继承真正的 ApplicationControllers rail 类并允许 before_filter 方法被....调用吗?
    • @Sylario: ApplicationControllerapp/controllers/application_controller.rb 中(遵循通常的 rails 约定)
    【解决方案2】:

    @cam 是对的。任何 Rails 项目都有一个 ApplicationController。您的控制器都以 MyController

    /app/controllers/application_controller.rb
    
    before_filter :load_collection
    
    def load_collection
        @collections = Collection.all
    end
    

    从现在开始,您可以使用来自所有控制器的@collections(只要它们继承自 ApplicationController)

    【讨论】:

      猜你喜欢
      • 2017-06-11
      • 2012-05-28
      • 2020-11-10
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      相关资源
      最近更新 更多