Маршрутизация Rails: псевдонимы остальных глаголов

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

Есть ли простой способ изменить метод по умолчанию, к которому привязан конкретный HTTP-глагол при работе с маршрутизацией RESTful в rails? Допустим, у каждого из моих контроллеров модели есть действие delete вместо destroy, однако, когда я использую:

 link_to "Delete", some_object, :method => :delete
  

Rails выполняет то, что должно, и направляет к действию destroy контроллера моего ресурса. Вместо этого я хотел бы перенаправить к действию с именем delete. Вот и все.

Я знаю, что могу просто использовать псевдоним ruby в своих контроллерах или добавить пользовательский маршрут участника для каждого из моих ресурсов, но есть ли более простой способ сделать это, чтобы внести изменения во все приложение? Спасибо!

Комментарии:

1. Меня интересует ответ из любопытства. Однако основной вопрос заключается в том, почему вы хотите это сделать? Зачем нарушать соглашение?

2. Я не из тех, кто нарушает соглашение, но я обновил старое приложение до Rails 3, которое использует метод delete вместо destroy в своих контроллерах. Я хочу сначала обновить маршруты и представления, прежде чем возиться с любым кодом контроллера. Это изменение было бы очень временным.

Ответ №1:

Если вы используете псевдоним в своем ApplicationController, то он будет передаваться на другие ваши контроллеры, которые наследуются от него.

Это будет функционировать так, как вы этого хотите.

Предупреждение: rails — это самоуверенное программное обеспечение, и, как правило, вам не захочется слишком далеко отходить от того, как работает rails. И rails любит стандартные действия REST.