11

我只是将 ActiveAdmin 添加到我的应用程序中,我在使用 show/edit/destroy 操作时遇到了问题,因为我的链接没有指向 ID,而是指向用户名(为了让用户更具可读性)。

ActiveAdmin 正确地创建了我的链接,例如:

编辑链接: http://localhost:3000/admin/users/paul/edit (where paul is the user name)

在这种情况下,我得到:

找不到 ID=paul 的用户

因为保罗当然不是 id 而是用户名。

如何自定义 ActiveAdmin 以在我的应用程序中使用 find_by_name(params[:id]) 来执行所有操作显示/编辑/删除?

在其他模型中,我得到了一个所谓的“SID”,它是一个生成的加盐 ID,我也想将 find_by_sid(params[:id]) 用于其他模型。

4

3 回答 3

25

有一种更清洁的方法可以做到这一点:

ActiveAdmin.register User do
 controller do
  defaults :finder => :find_by_slug
 end
end
于 2013-06-20T23:31:38.087 回答
13

这将在 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
于 2011-10-10T19:46:04.053 回答
1

如果您遵循此 railscast:http: //railscasts.com/episodes/63-model-name-in-url-revised并具有自定义路由,则可以通过将其放置在 app/admin/user.rb 中来修复 active_admin 路由:

before_filter :only => [:show, :edit, :update, :destroy] do
  @user = User.find_by_slug!(params[:id])
end

和 afiah 显示的非常接近,只是略有不同。

于 2013-03-12T03:59:42.510 回答