Маршруты Rails по умолчанию через реализацию ресурсов

ресурсы: фото

Создает семь разных маршрутов, все они сопоставляются с контроллером Photos.

ПОЛУЧИТЬ /фотографии

ПОЛУЧИТЬ /фотографии/новый

ПОСТ /фотографии

ПОЛУЧИТЬ /фотографии/:id

ПОЛУЧИТЬ /фотографии/:id/редактировать

PATCH/PUT /фотографии/:id

УДАЛИТЬ /фотографии/:id

Но где он определяется в приложении rails, откуда он выбирается автоматически.

Если нам нужно реализовать некоторые маршруты так же, как ресурсы, как мы можем это сделать?


person abcd_win    schedule 04.05.2014    source источник
comment
можешь объяснить - some routes the same way resources does?   -  person Lenin Raj Rajasekaran    schedule 04.05.2014


Ответы (2)


Чтобы ответить на этот вопрос: If we need to implement some routes the same way resources does, how can we do it?:

Из resources :photos вы можете создавать отдельные маршруты следующим образом:

get 'photos', to: 'photos#index'
post 'photos', to: 'photos#create'
get 'photos/new', to: 'photos#new'
get 'photos/:id/edit', to: 'photos#edit'
get 'photos/:id', to: 'photos#show'
patch 'photos/:id', to: 'photos#update'
put 'photos/:id', to: 'photos#update'
delete 'photos/:id', to: 'photos#destroy'

Это так просто. если вам не нужны все маршруты, поставляемые с resources, вы можете просто реализовать те, которые вам нужны.

person Wally Ali    schedule 04.05.2014

Когда вы используете

resource :photos

rails автоматически генерирует маршруты CRUD, которые позволяют создавать, читать, обновлять и уничтожать фотографии. Rails использует здесь ряд соглашений для сопоставления этих основных маршрутов CRUD с действиями контроллера. Например, методы POST связаны с действиями create() ваших контроллеров.

Это поведение реализовано в модуле ActionDispatch::Routing::Mapper::Resources.

Если вам нужно добавить новый маршрут (для нового действия контроллера), который не является частью обычного набора действий CRUD, вам нужно указать его в файле route.rb вашего приложения rails.

У вас есть два варианта:

а. Действие влияет на коллекцию объектов Photo (аналогично действию index). Для этого вам нужно добавить маршрут в блок «коллекция». Это преобразуется в маршрут без какого-либо параметра :id в URL-адресе маршрута.

resources :photos collection do get 'thumbnail' end end

б. Действие влияет только на объект Photo (аналогично действиям редактирования и уничтожения). Для этого вам нужно добавить маршрут в блок «member» и сделать доступным параметр :id в контроллере. Полученный URL маршрута нужно будет указать в /photos/:id/my_action

resources :photos member do get 'gallery' end end

Также обратите внимание на http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

person brikkoroller    schedule 04.05.2014
comment
Моя главная забота: как рельсы автоматически генерируют маршруты CRUD, которые позволяют вам создавать, читать, обновлять и уничтожать фотографии. Я также хочу реализовать что-то похожее на то, что Rails сделал с ресурсами. Что-то вроде: dashboard_resources, который создаст некоторые CRUD-маршруты по умолчанию, которые позволят вам показывать, искать, фильтровать и т. д. и т. д. - person abcd_win; 05.05.2014