Active Admin:无法访问显示/编辑页面。

7
我在使用Active Admin时遇到了问题。以下是版本信息:
  • ruby '2.2.1'

  • rails '4.2.0'

  • activeadmin : 1.0.0.pre1

  • arbre : 1.0.3 (之所以提到它是因为它似乎与我的问题有关)

我们升级到了rails 4.2,也不得不升级activeadmin(从0.5)。经过一些调整(特别是授权系统),一切似乎都很好,除了一个大问题:我只能访问索引页面。当访问带有ID的页面时(例如:"http://localhost:3000/admin/companies/2968"),我会收到此错误:

No route matches {:action=>"edit", :controller=>"admin/companies", :format=>nil, :id=> #{User id: nil, [all user attributes with nil value]}}. Missing required keys: [:id]

看起来param[:id]被某种方式改成了一个空的用户,这当然会导致它出现问题。

以下是我所知道的:

  • 在我的ApplicationController顶部放置binding.pry并检查参数时,我得到{:action=>"edit", :controller=>"admin/companies", :format=>nil, :id=>2968}(因此这里没有问题)

  • 引发错误的行是:

active_admin/resource/show.html.arb

-> arbre/element/builder_method.rb#insert_tag

-> arbre/element/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 routes 中,生成的路由看起来很好(在这个特定的例子中,我有 admin/companies#edit admin_company GET /admin/companies/:id(.:format))。
编辑2 >> 以防不清楚,所有展示页面都会发生这种情况。 例如,如果我去 http://localhost:3000/admin/projects/,它可以正常工作,但是 http://localhost:3000/admin/projects/23815 也会给我一个空用户 id。

请将 app/admin/company.rb 文件添加到您的问题中。 - scarver2
此外,将您的 config/initializers/active_admin.rb 重命名为 config/initializers/active_admin.rb.off 并重新运行 ActiveAdmin 的安装程序 bundle exec rails g active_admin:install,以查看是否解决了问题。确保 ActiveAdmin.routes(self) 在您的 routes.rb 文件中。此外,请从 Rails 控制台确保 Company<->User 关联按照错误消息所示正常工作。 - scarver2
谢谢回复。 重新运行AA的安装程序没有解决问题。 我在帖子中添加了路由的详细信息。公司/用户关联正常,更新之前admin/company.rb也正常工作,但是这个特定的问题甚至在进入此文件之前就发生了,并且对于所有模型都是如此!每个admin/model/id路由都无法正常工作。 - BPruvost
交换这两条路线的顺序。如果这不起作用,您是否愿意将我添加到您的存储库中,以便我可以进一步调查? - scarver2
没有实际的代码很难说。你有 AA 的任何猴子补丁吗?在构建编辑页面的链接时它会出错。你是自己构建的吗? - faron
1个回答

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接