Как я могу получить маршрут рельсов, чтобы сохранить расширение как часть идентификатора? - PullRequest
8 голосов
/ 05 августа 2010

У меня определен следующий маршрут:

map.resources :images, :only => [ :index, :new, :destroy ]

когда я делаю rake routes, я получаю следующее:

image DELETE /images/:id(.:format) {:action=>"destroy", :controller=>"images"}

Моя проблема в том, что я хотел бы использовать файлимена как мои :id включая любое расширение.На данный момент мои идентификаторы попадают в контроллер без расширения.Можно ли каким-либо образом настроить вышеуказанный map.resources, чтобы сгенерировать следующий путь:

image DELETE /images/:id {:action=>"destroy", :controller=>"images"}

, т.е. не использовать расширение, используемое как :format?

Ответы [ 2 ]

5 голосов
/ 05 августа 2010

Символ . определен в ActionController::Routing::SEPARATORS, в котором перечислены специальные символы для разделения URL-адреса.

Если вы хотите избежать разделения URL на . с, вам нужно передать аргумент :constraints => { :id => /regexp/ } map.resources.

См. мой связанный вопрос и ответ для получения дополнительной информации.

1 голос
/ 05 августа 2010

Я не мог понять, как передать идентификатор без изменений контроллеру, но это обходной путь, который я использовал для восстановления идентификатора:

id = [ params['id'], params['format'] ].compact.join '.'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...