Перенаправление на пользовательский путь при невозможности обновления - PullRequest
0 голосов
/ 12 января 2012

У меня настроен маршрут, подобный этому -

  match "/:id" =>"car#edit", :as => :edit_car
  match "/:id/thanks" =>"cars#thanks", :as => :thanks

www.myurl.com / 12345 перейдет к действию редактирования автомобиля.

Мое действие по обновлению выглядит следующим образом

def update
  @car = Car.find(params[:id])
  respond_to do |format|
    if @car.update_attributes(params[:car])
      format.html { redirect_to(thanks_path(@car)) }
    else
      format.html { render action: "edit" }
    end
  end
end  

При успешном обновлении он перенаправляет на www.myurl.com/12345/thanks - что хорошо - работает как положено.

Однако, если при обновлении возникают ошибки, он отображаетотредактировать действие как -

  www.myurl.com/cars/12345

Я бы хотел изменить действие редактирования как -

  www.myurl.com/12345

Я хочу убедиться, что сообщения об ошибках по-прежнему отправляются.Это возможно?

1 Ответ

1 голос
/ 12 января 2012

Маршрут, который вы видите, является действием редактирования маршрута ресурса, а не вашим отдельно определенным действием редактирования.Следовательно, он включает в себя контроллер в пути.

Если вы хотите, чтобы путь не включал контроллер автомобилей, вы можете включить это в определение маршрута:

resources :cars, :path => '/'

Из опыта я советую вамне делайте этого, потому что когда вы расширяете свое приложение, дела идут не так, как надо.

Я предлагаю вам покончить с определенным действием редактирования и редактировать свои автомобили из действия шоу вашего маршрута ресурсов.Кроме того, вы можете отобразить сообщение об успешном завершении действия обновления, не перенаправляя файл представления обновления.

Если вы хотите перенаправить, вы можете изменить маршруты ресурсов следующим образом:

resources :cars, :path => '/' do
   member do 
     get 'thanks'
   end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...