Rails 3.2 ActiveAdmin'集合不是分页范围。'错误

时间:2012-08-20 07:46:58

标签: ruby-on-rails ruby activeadmin

我正在使用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行引发: 集合不是分页范围。在调用之前设置collection.page(params [:page])。per(10):paginated_collection。

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

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

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

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

所有其他型号都能正常运作。

7 个答案:

答案 0 :(得分:8)

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

实施例

<强> BREAKS

ActiveAdmin.register Stage do

<强> WORKS

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。

答案 1 :(得分:5)

这是解决方案(/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

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

在rails 4.1

中,没有一个答案适合我

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

答案 5 :(得分:0)

是否可以在活动管理页面上重命名资源名称,如

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

这解决了我的问题。

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

答案 6 :(得分:0)

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

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