Я создаю веб-сайт с модулем блога. Сообщение в блоге может быть черновиком или опубликовано.
Опубликованное сообщение больше нельзя редактировать, а черновик нельзя просмотреть (только редактировать)
В настоящее время у меня есть ресурс, определенный как
resources :posts, :path => "blog" do
collection do
get 'drafts'
end
end
Я могу получить доступ к списку черновиков с помощью blog/drafts
, создавать новые сообщения с помощью blog/new
и редактировать черновики с помощью blog/:id/edit
.
Однако я бы хотел, чтобы новые черновики создавались с помощью blog/drafts/new
и редактировались с помощью blog/drafts/:id
Мне нужно определить маршруты new
, create
, edit
и update
, чтобы использовать эту новую схему. Маршруты new
и create
кажутся довольно простыми. Однако я не знаю, как обрабатывать маршрут edit
, чтобы удалить часть имени действия.
Кроме того, просматривая определение маршрутов по умолчанию, я нашел в actionpack-3.2.9/lib/action_dispatch/routing/mapper.rb
следующее:
member do
get :edit if parent_resource.actions.include?(:edit)
get :show if parent_resource.actions.include?(:show)
[...]
end
Я не понимаю, как рельсы различают маршруты :edit
и :show
и соответственно сопоставляют URL-адреса.
Спасибо