Administrate-gem不允许查看用户



Rails 6.0使用gemadministrate。被标记为管理员的用户可以正确访问页面。

显示用户索引,例如,可以访问编辑页面:

/admin/users/2579/edit

但是调用同一对象的显示页面会返回错误

undefined method `admin_role_path'

指向由管理员gem 自动生成的CCD_ 2的第59行

<%= %(tabindex=0 role=link data-url=#{polymorphic_path([namespace, resource])}) %>
Trace of template inclusion: #<ActionView::Template /.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/administrate-0.14.0/app/views/fields/has_many/_show.html.erb locals=["field", "page"]>, #<ActionView::Template app/views/admin/application/show.html.erb locals=["page"]>

我删除了所有的代码,并用一个简单的<%= ressource %>替换它,将等号切换为散列。三个join(of has_many(类有一个ActiveRecord_AssociationRelation,它意外地调用了集合表单。<%= ressource.inspect %>允许查看每个关系的详细信息。

尽管如此,错误生成的机制对我来说是不透明的,因为在存储库中找不到上述路径。

问题的根源是什么?如何管理?

我认为您遗漏了一些重要信息。我认为你们的User型号has_many :roles是对的吗?

你在";显示";页面,并且Administrate正试图呈现";集合";。看起来它试图呈现用户的角色,但这就是失败的地方。

错误显示undefined method 'admin_role_path'。这向我表明/admin/roles/:id路线并不存在。是这样吗?

我只是看了一眼,然后自己重现了这个问题。这是Administrate中的一个错误。我们应该检查是否存在";显示";关联模型的路线。在这种情况下没有,它失败了。

解决方法是为角色提供一个路由:resources :roles。正确的解决方案是修复这个错误。

我刚刚在回购中为此提交了一个问题:https://github.com/thoughtbot/administrate/issues/1861

相关内容

  • 没有找到相关文章

最新更新