Чтобы ответить на ваш комментарий к другому ответу:
Мне интересно, есть ли способ, вообще не переписывая контроллер, сообщить rails, что вы хотите, чтобы URL соответствовал отображаемому шаблону, а не действию контроллера, которое его вызвало.
Я так не думаю; URL-адреса напрямую связаны с маршрутизацией, которая связана с парой контроллер и действие - уровень рендеринга вообще не касается этого.
Чтобы ответить на ваш первоначальный вопрос , вот информация от другого похожего вопроса Я ответил.
Как вы обнаружили, по умолчанию, когда вы указываете 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 по правильному пути.