Rails отключить редактировать обновить удалить маршруты - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь найти способ отключить маршруты ресурсов, такие как редактирование, уничтожение и обновление. Это можно сделать с помощью этого ответа. Отключить маршрут В этом ответе я могу поставить код, подобный этому:

resources :books, except: [:edit, :destroy]

И это будет работать, но у меня есть уникальная проблема. Я создал много маршрутов ресурсов, и мой файл маршрутов выглядит так:

         resources :expenditure_management2s do 
                            collection { post :import }
                            collection { get :dropdown }
                            collection { get :test }
                            end 
        resources :expenditure_management1s do 
                            collection { post :import }
                            collection { get :dropdown }
                            collection { get :test }
                            end 
        resources :expenditure_managements do 
                            collection { post :import }
                            collection { get :dropdown }
                            collection { get :test }
                            end 
                 ......

У меня почти 100 таких маршрутов. Если мне придется менять эти методы один за другим, это будет трудная задача. Есть ли способ, где я могу сгруппировать эти маршруты в некоторый метод и отклонить редактирование обновления и уничтожить для всех ресурсов маршрута.

1 Ответ

0 голосов
/ 11 сентября 2018

Я думаю, вы можете использовать область в вашем файле routes.rb, например:

scope except: [:edit, :destroy] do
  resources :users
end

Вернет маршруты:

users     GET   /users(.:format)   users#index
          POST  /users(.:format)   users#create
new_user  GET   /users/new(.:format)   users#new
user      GET   /users/:id(.:format)   users#show
          PATCH /users/:id(.:format)   users#update
          PUT   /users/:id(.:format)   users#update

Как вы можете видеть users#destroy и users#edit маршруты отсутствуют.

В вашем случае это будет:

 scope except: [:edit, :destroy] do
    resources :expenditure_management2s do 
                        collection { post :import }
                        collection { get :dropdown }
                        collection { get :test }
                        end 
    resources :expenditure_management1s do 
                        collection { post :import }
                        collection { get :dropdown }
                        collection { get :test }
                        end 
    resources :expenditure_managements do 
                        collection { post :import }
                        collection { get :dropdown }
                        collection { get :test }
                        end 
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...