7

我在使用 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

4

1 回答 1

0

我不认识这个问题,但 0.5 是一个非常旧的版本。根据我的经验,我们必须逐步升级,例如 Rails 3.2/AA 0.6 以缩小各种问题的原因。回顾旧的 CHANGELOG,我确实在 0.6.1 中找到了此修复程序,这可能与您的问题有关。

于 2016-12-25T16:21:30.530 回答