Rails:ActiveAdmin不适用于Friendly_id

时间:2013-03-23 01:14:41

标签: ruby-on-rails activeadmin friendly-id

我将ActiveAdmin设置为管理网站上的用户,而Friendly_id设置为可读网址。当我转到/ admin / users时,会抛出此错误:

Undefined method `per' for #<User::FriendlyIdActiveRecordRelation:0x007fdb61a38d30>

如何在用户模型中设置friendly_id:

class User < ActiveRecord::Base
  #...
  extend FriendlyId
  friendly_id :name, use: :slugged
end

我可以找到这两个宝石之间冲突的唯一资源是这个问题ActiveRecord::ReadOnlyRecord when using ActiveAdmin and Friendly_id,这似乎是一个不同的问题,解决方案在我的案例中并不起作用。有关如何解决此问题的任何建议吗?

3 个答案:

答案 0 :(得分:1)

我能够修复它this way

  

除非您使用:finders addon,否则您应该修改使用FriendlyId的模型的管理控制器,其类似于以下内容:

controller do
  def find_resource
    scoped_collection.friendly.find(params[:id])
  end
end

答案 1 :(得分:0)

我发现这实际上不是friendly_id的问题,而是will_paginate,如https://github.com/gregbell/active_admin/issues/670所述。切换到kaminari以进行分页可以解决我的问题。

答案 2 :(得分:0)

我也遇到过这个问题,发现friendly_id会覆盖to_param方法,所以只需重新覆盖它。它对我有用。

ActiveAdmin.register User do
  before_filter do
    User.class_eval do
      def to_param
        id.to_s
      end
    end
  end
end