0

我设置了 ActiveAdmin 来管理站点上的用户,并设置了 Friendly_id 用于可读的 url。当我转到 /admin/users 时,它会抛出此错误:

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

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

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

对于这两个 gem 之间的冲突,我能找到的唯一资源是这个问题ActiveRecord::ReadOnlyRecord when using ActiveAdmin and Friendly_id这似乎是一个不同的问题,并且该解决方案在我的情况下不起作用。关于如何解决这个问题的任何建议?

4

3 回答 3

2

我能够以这种方式修复它:

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

controller do
  def find_resource
    scoped_collection.friendly.find(params[:id])
  end
end
于 2015-07-25T13:15:33.730 回答
0

我发现这实际上不是问题,friendly_id而是will_paginate这里提到的https://github.com/gregbell/active_admin/issues/670。切换到kaminari分页为我解决了这个问题。

于 2013-03-25T22:01:46.207 回答
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
于 2014-10-23T09:21:40.983 回答