Как вы обнаружили, по умолчанию, когда вы указываете resources :things
, путь POST для создания новой вещи находится в /things
.Вот вывод для rake routes
:
things GET /things(.:format) {:action=>"index", :controller=>"things"}
POST /things(.:format) {:action=>"create", :controller=>"things"}
new_thing GET /things/new(.:format) {:action=>"new", :controller=>"things"}
edit_thing GET /things/:id/edit(.:format) {:action=>"edit", :controller=>"things"}
thing GET /things/:id(.:format) {:action=>"show", :controller=>"things"}
PUT /things/:id(.:format) {:action=>"update", :controller=>"things"}
DELETE /things/:id(.:format) {:action=>"destroy", :controller=>"things"}
Звучит так, как будто вы хотите что-то похожее на это:
create_things POST /things/new(.:format) {:action=>"create", :controller=>"things"}
things GET /things(.:format) {:action=>"index", :controller=>"things"}
new_thing GET /things/new(.:format) {:action=>"new", :controller=>"things"}
edit_thing GET /things/:id/edit(.:format) {:action=>"edit", :controller=>"things"}
thing GET /things/:id(.:format) {:action=>"show", :controller=>"things"}
PUT /things/:id(.:format) {:action=>"update", :controller=>"things"}
DELETE /things/:id(.:format) {:action=>"destroy", :controller=>"things"}
Хотя это и не рекомендуется, вы можете получить этот результат по следующему маршруту:
resources :things, :except => [ :create ] do
post "create" => "things#create", :as => :create, :path => 'new', :on => :collection
end
Вам также понадобится изменить свои формы, чтобы сделать их POST по правильному пути.
При всем этом, описание URL-адресов, которые у вас есть в вашем вопросе, незвучит правильно.Вы перечисляете следующее: После отправки нового thing
(отправки формы на /things/new
),
- URL-адрес изменится с
/things/new
на /things
- Нажатие на кнопкупредлагает повторить отправку формы
- Обновление шоу
things#index
Это , а не функциональность, которую я испытываю в своих собственных приложениях на Rails 3.Вместо этого я обнаружил, что: после отправки нового thing
(отправка формы на /things/new
),
- URL-адрес изменится с
/things/new
на /things
(это то же самое) - Нажатие на кнопку возвращает пользователя к отправленной не форме (нет запроса на повторную публикацию)
- Обновление подсказок для повторной отправки формы (как и ожидалось, на мой взгляд))