Ruby on rails 如何为所有操作使用按请求查找而不是ID来自定义ActiveAdmin
我刚刚将ActiveAdmin添加到我的应用程序中,我在使用show/edit/destroy操作时遇到问题,因为我的链接不指向ID,而是指向用户名(以便用户更容易阅读) ActiveAdmin正确创建我的链接,如: 编辑链接:Ruby on rails 如何为所有操作使用按请求查找而不是ID来自定义ActiveAdmin,ruby-on-rails,ruby-on-rails-3,activeadmin,Ruby On Rails,Ruby On Rails 3,Activeadmin,我刚刚将ActiveAdmin添加到我的应用程序中,我在使用show/edit/destroy操作时遇到问题,因为我的链接不指向ID,而是指向用户名(以便用户更容易阅读) ActiveAdmin正确创建我的链接,如: 编辑链接: http://localhost:3000/admin/users/paul/edit (其中paul是用户名) 在这种情况下,我得到: 找不到ID为的用户 因为Paul当然不是id而是用户名 如何自定义ActiveAdmin在我的应用程序中使用find_by_name
http://localhost:3000/admin/users/paul/edit (其中paul是用户名)
在这种情况下,我得到:
找不到ID为的用户
因为Paul当然不是id而是用户名
如何自定义ActiveAdmin在我的应用程序中使用find_by_name(params[:id])来执行所有动作show/edit/delete
在另一个模型中,我得到了一个所谓的“SID”,它是一个生成的salt ID,我还想对其他模型使用find_by_SID(params[:ID])。这将在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
如果您遵循此railscast:并拥有自定义路由,则可以通过将其放置在app/admin/user.rb中来修复活动的\u管理员路由:
before_filter :only => [:show, :edit, :update, :destroy] do
@user = User.find_by_slug!(params[:id])
end
它与afiah展示的非常接近,只是略有不同。有一种更干净的方法可以做到这一点:
ActiveAdmin.register User do
controller do
defaults :finder => :find_by_slug
end
end
看看这个相关的问题,被接受的答案也是你问题的解决方案:今晚我会试试,这是由于to_param命令的作用。试过之后我会和你保持联系。非常感谢:)