【问题标题】:Rails 3.2 ActiveAdmin 'Collection is not a paginated scope.' errorRails 3.2 ActiveAdmin '集合不是分页范围。错误
【发布时间】:2012-08-15 13:32:02
【问题描述】:

我正在使用 Rails 3.2 和 ActiveAdmin 0.4.4 开发一个应用程序。 我有名为 Teaser (/app/models/teaser.rb) 的模型:

class Teaser < ActiveRecord::Base
  attr_accessible :img, :name, :url
  validates :img, :name, :presence => true
  mount_uploader :img, TeaserUploader
end

我在其中添加了 ActiveAdmin (/app/admin/teaser.rb):

# encoding: UTF-8
ActiveAdmin.register Teaser do
    form do |f|
        f.inputs "Teaser" do
            f.input :name, :label => 'Текст'
            f.input :url, :label => 'Ссылка'
            f.input :img, :as => :file, :label => 'Картинка'
        end
        f.buttons
    end
end

现在,当我转到“http://localhost:3000/admin/teasers”时,我收到以下错误:

显示 C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activeadmin-0.4.4/app/views/active_admin/resource/index.html.arb 其中第 1 行提出: 集合不是分页范围。在调用 :paginated_collection 之前设置 collection.page(params[:page]).per(10)。

当我在 linux (Ubuntu 12.04) 上测试我的应用程序时,我遇到了同样的错误。

我可以通过这种方式解决这个问题(/app/admin/teaser.rb):

# encoding: UTF-8
ActiveAdmin.register Teaser, :as => 'Somename' do

但是如果我使用这种方法,我无法使用 /app/config/locales/XX.yml 翻译这个模型

所有其他模型都可以正常工作。

【问题讨论】:

    标签: ruby-on-rails ruby activeadmin


    【解决方案1】:

    在某些情况下,您需要做的就是在活动管理员中更改模型的标签

    例子

    休息

    ActiveAdmin.register Stage do
    

    有效

    ActiveAdmin.register Stage, as: "Opportunity Stage" do
    

    模型页面

    也是如此

    更新:5 月 30 日

    我又遇到了这个问题,模型像

    ActiveAdmin.register PageRedirects 做

    application_controller.rb 我有这个:

    before_filter :abc
    
    def abc
      @page_redirects = ...
    end
    

    我猜这个方法会覆盖来自 active-admin 控制器的@page_redirects。

    【讨论】:

      【解决方案2】:

      这里是解决方案 (/app/models/teaser.rb)

      collection_action :index, :method => :get do
        scope = Teaser.scoped
        @collection = scope.page() if params[:q].blank?
        @search = scope.metasearch(clean_search_params(params[:q]))
      end
      

      【讨论】:

      • 这里有同样的问题。我的管理页面运行良好,突然繁荣!你的一段代码已经解决了问题...
      • 页面需要参数,你用params[:page]吗?
      【解决方案3】:

      您可能有一个与冲突的控制器同名的变量。也许在你的 application_controller.rb 中?

      【讨论】:

      • 很清楚,很好,谢谢,我在 mi 应用程序控制器中确实有同名的变量,我重命名了这些变量,一切正常,谢谢
      【解决方案4】:

      只是改进答案...我在使用活动管理过滤器时遇到了问题,所以我不得不修改一点代码。它现在对我有用。

      collection_action :index, :method => :get do
        scope = Teaser.scoped
        @search = scope.metasearch(clean_search_params(params[:q]))
        @collection =  @search.page()  
      end
      

      【讨论】:

        【解决方案5】:

        在 rails 4.1 中没有一个答案对我有用

        github issue 的讨论中,事实证明这是由活动管理员从应用程序控制器继承这一事实引起的。
        所以要回答这个问题,我想这个错误是由应用程序控制器中的@teasers 分配一些集合引起的。

        【讨论】:

          【解决方案6】:

          您能否重命名活动管理页面上的资源名称,例如

          ActiveAdmin.register Teaser, as: "Some other name" do
          

          这解决了我的问题。

          我认为这是由于资源名称冲突。

          【讨论】:

            【解决方案7】:

            在活动管理员中添加默认范围为我解决了这个问题。

            ActiveAdmin.register StaticPage, as: 'Static Page' do
              scope :all, default: true
              # ...
            end
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-09-23
              • 2015-06-17
              • 1970-01-01
              • 2013-05-19
              • 1970-01-01
              • 2020-09-29
              • 1970-01-01
              相关资源
              最近更新 更多