Ruby on Rails - 活动管理员:与全局变量冲突

时间:2014-04-22 15:51:07

标签: ruby-on-rails activeadmin

在Rails 4上使用最新版本的Active Admin(使用Ransack)。我有一个奖项模型,我在application_controller.rb中全局提供:

  before_action :set_awards

  private
    def set_awards
      @awards = Award.all
    end

这样我可以在全球导航下拉列表中列出所有奖项(在公共方面)。我认为这与Active Admin存在冲突。当我进入奖项索引页面时,我收到以下错误消息:

Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.

我不确定这究竟是什么意思,但由于这是唯一发生这种情况的模型,我猜这与我在app控制器中的代码有关。我认为我的问题类似于这个问题:

Rails 3.2 ActiveAdmin 'Collection is not a paginated scope.' error

...我不想更改模型的标签,并且提供的元搜索代码不起作用,因为(我认为)Active Admin现在使用Ransack。谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,这是一个变量名称,我在应用程序控制器中声明与ActiveAdmin冲突。

我有一个名为Post的模型,在我的applicationController中我有一个这样的方法:

def load_posts
  @posts = Post.all
end

它返回了我提到的错误,所以我修复了它将变量名改为:

def load_posts
  @post_list = Post.all
end

希望它有所帮助。

答案 1 :(得分:0)

可能是你在ApplicationController中覆盖了局部变量@awards,但Active Admins是从应用程序控制器继承的。 只需重命名您的变量即可运行。