我在使用 Active Admin 时遇到问题。以下是版本:
红宝石'2.2.1'
导轨'4.2.0'
活动管理员:1.0.0.pre1
arbre:1.0.3(提到这个是因为它似乎与我的问题有关)
我们升级到 rails 4.2 并且还必须升级 activeadmin(从 0.5 开始)。经过几次调整(尤其是授权系统),一切似乎都很好,除了一个大问题:我只能访问索引页面。当转到带有 ID 的页面时(例如:“ http://localhost:3000/admin/companies/2968 ”),我收到此错误:
没有路由匹配 {:action=>"edit", :controller=>"admin/companies", :format=>nil, :id=> #{User id: nil, [all user attributes with nil value]}}。缺少必需的键:[:id]
看起来 param[:id] 以某种方式更改为空用户,这当然会使其中断。
这是我所知道的:
在我的 ApplicationController 上放置 binding.pry 并检查参数时,我得到 {:action=>"edit", :controller=>"admin/companies", :format=>nil, :id=>2968} (所以这里没问题)
引发错误的行是:
active_admin/resource/show.html.arb
-> arbre/元素/builder_method.rb#insert_tag
-> arbre/元素/builder_method.rb#build_tag
-> actionpack/actiondispatch/journey/formatter#generate(调用此方法时,path_parameters ID 值已损坏,从而引发错误)
知道为什么我的 ID 参数没有被正确解释/我可以在哪里进一步查看?
编辑 >> 我的 routes.rb 中有这个
ActiveAdmin.routes(self)
devise_for :admin_users, ActiveAdmin::Devise.config
并且生成的路由看起来很好用 rake 路由(在这个特定的例子中,我有 admin/companies#edit admin_company GET /admin/companies/:id(.:format)
EDIT2 >> 如果不清楚,所有节目页面都会发生这种情况。如果我去http://localhost:3000/admin/projects/例如,它工作正常,但http://localhost:3000/admin/projects/23815 也给了我 id = empty user