范围路线创建路由问题

问题描述 投票:0回答:1

我试图学习干掉我的代码,但遇到了一个问题,

我用控制器和路径选项确定我的路线

  scope path: '/administrators', controller: :administrators do
    get 'unverified' => :unverified
    patch 'verify/:id' => :verify
    get 'reported' => :reported
    get 'ban_user' => :ban_user
    patch 'execute_ban/:id' => :execute_ban
  end

所以这是我到目前为止所做的,所有get链接都正常工作......但这使得patch 'execute_ban/:id' => :execute_ban成为这样的ban user的扩展:(也与验证相同)

 verified GET      /administrators/unverified(.:format)      administrators#unverifie    
          PATCH    /administrators/verify/:id(.:format)      administrators#verify
 reported GET      /administrators/reported(.:format)        administrators#reported
 ban_user GET      /administrators/ban_user(.:format)        administrators#ban_user
          PATCH    /administrators/execute_ban/:id(.:format) administrators#execute_ban

现在我改变了我的link_to route = qazxsw poi

但它抛出一个路由错误,说没有路径匹配。

有什么东西是我缺失的,任何洞察力都会像往常一样。

谢谢

ruby-on-rails
1个回答
0
投票

为什么不采用围绕被修改资源的更加宁静的设计呢?

link_to 'ban', ban_user_path(x.id), method: :patch

您不需要表单的不同路径并作用于资源 - 请改用HTTP谓词。

Rails.application.routes.draw do
  resources :users do
    get :unverified, on: :collection
    get :reported, on: :collection
    get :ban
    patch :ban, action: 'execute_ban'
  end
end

如果您只是为了授权而添加一个单独的控制器,那么它就是一种反模式,因为您只是为Pundit / CanCanCan应该处理的事情增加了更多的复杂性。

© www.soinside.com 2019 - 2024. All rights reserved.