1

我用:

def to_param
    user_name
end

在我的活跃管理员 user.rb

ActiveAdmin.register User do
  index do
      column :id
      column :email
      column :user_name
      column :created_at
      default_actions
  end
end

这当然给了我一个Couldn't find User with id=testuser

我如何指定 Active Admin 正确使用它?

编辑1:使用下面的答案,它可以工作,但是所有应用程序都覆盖了参数的定义。

4

3 回答 3

2

覆盖 ActiveAdmin 的 to_param 实现

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

有关与此主题相关的更多信息/替代解决方案,请参阅此 SO 帖子

于 2013-10-15T19:46:34.090 回答
2

这将在 app/admin/user.rb 中完成工作:

ActiveAdmin.register User do
  before_filter :only => [:show, :edit, :update, :destroy] do
    @user = User.find_by_name(params[:id])
  end
end
于 2013-10-17T17:15:30.070 回答
2

您要覆盖默认查找器:

controller do
  defaults :finder => :find_by_user_name
end
于 2015-03-02T16:43:36.047 回答