Rails, как переписать этот старый маршрут map.connect? - PullRequest
1 голос
/ 15 сентября 2011

Как мне переписать этот старый маршрут Rails 1.2.6 на Rails 3?:

  # Allow downloading Web Service WSDL as a file with an extension
  # instead of a file named 'wsdl'
  map.connect ':controller/service.wsdl', :action => 'wsdl'

Я не могу понять, как я должен использовать маршрут матча и т. Д.

Я использовал:

  match ':controller/service.wsdl', :action => 'wsdl'

Но я не думаю, что это работает правильно

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Попробуйте это:

match '/controller/service.wsdl' => 'controller#service.wsdl', :as => :wsdl

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

0 голосов
/ 06 мая 2016

Я не нашел хорошего решения для преобразования параметризованных маршрутов Rails 2: controller и: action родовых маршрутов в более явный формат Rails 3+. Мне нужно было пройти каждую перестановку в моем приложении и добавить явный маршрут для всего, что мне нужно было поддерживать. Например, в вашем случае, если бы у вас было 3 контроллера, которые поддерживали действие wsdl, я бы добавил новый маршрут для каждого, используя либо match, либо get.

Вот как это может выглядеть, при условии, что у вас есть foo_controller, bar_controller и blah_controller, которые все поддерживают действие wsdl:

get '/foo/service.wsdl' :to => 'foo#wsdl'
get '/bar/service.wsdl' :to => 'bar#wsdl'
get '/blah/service.wsdl' :to => 'blah#wsdl'

Это становится еще веселее, когда вам нужно поддерживать каждое действие на контроллере, когда они используют: действие.

Если у кого-то есть лучший метод, я открыт (и очень хочу) услышать о лучшем способе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...