管理 gem 不允许查看用户
Administrate gem does not allow to view user
A Rails 6.0 使用 gem administrate
。标记为管理员的用户可以正确访问页面。
显示用户索引,例如可以访问编辑页面:
/admin/users/2579/edit
但是调用同一个对象的显示页面returns出错
undefined method `admin_role_path'
指向 app/views/admin/application/_collection.html.erb
的第 59 行,这是由管理员自动生成的 gem
<%= %(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 %>
,将等号切换为散列。
三个连接(has_many)类 有一个 ActiveRecord_AssociationRelation
不可理解地调用集合表单。 <%= ressource.inspect %>
允许查看每个关系的详细信息。
错误生成的机制对我来说仍然是不透明的,因为在存储库中找不到上述路径。
问题的根源是什么,如何解决?
我认为您遗漏了一些重要信息。我认为您的 User
模型 has_many :roles
对吗?
您在“显示”页面中,Adminstrate 正在尝试呈现“集合”。看起来它正在尝试呈现用户的角色,这就是失败的地方。
错误显示 undefined method 'admin_role_path'
。这向我表明路线 /admin/roles/:id
不存在。是这样吗?
刚刚看了下,自己复现了问题。这是管理中的错误。我们应该检查关联模型是否有“显示”路线。在这种情况下没有,它失败了。
解决方法是为角色提供路由:resources :roles
。正确的解决方案是修复错误。
我刚刚为此在回购协议中提出了一个问题:https://github.com/thoughtbot/administrate/issues/1861
A Rails 6.0 使用 gem administrate
。标记为管理员的用户可以正确访问页面。
显示用户索引,例如可以访问编辑页面:
/admin/users/2579/edit
但是调用同一个对象的显示页面returns出错
undefined method `admin_role_path'
指向 app/views/admin/application/_collection.html.erb
的第 59 行,这是由管理员自动生成的 gem
<%= %(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 %>
,将等号切换为散列。
三个连接(has_many)类 有一个 ActiveRecord_AssociationRelation
不可理解地调用集合表单。 <%= ressource.inspect %>
允许查看每个关系的详细信息。
错误生成的机制对我来说仍然是不透明的,因为在存储库中找不到上述路径。
问题的根源是什么,如何解决?
我认为您遗漏了一些重要信息。我认为您的 User
模型 has_many :roles
对吗?
您在“显示”页面中,Adminstrate 正在尝试呈现“集合”。看起来它正在尝试呈现用户的角色,这就是失败的地方。
错误显示 undefined method 'admin_role_path'
。这向我表明路线 /admin/roles/:id
不存在。是这样吗?
刚刚看了下,自己复现了问题。这是管理中的错误。我们应该检查关联模型是否有“显示”路线。在这种情况下没有,它失败了。
解决方法是为角色提供路由:resources :roles
。正确的解决方案是修复错误。
我刚刚为此在回购协议中提出了一个问题:https://github.com/thoughtbot/administrate/issues/1861