Как я могу заставить маршрут направляющих сохранять расширение как часть идентификатора?

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

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

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

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

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

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

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

8
задан tpower 4 August 2010 в 20:24
поделиться

2 ответа

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

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

Дополнительную информацию см. в моем связанном вопросе и ответе.

5
ответ дан 5 December 2019 в 22:15
поделиться

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

id = [ params['id'], params['format'] ].compact.join '.'
1
ответ дан 5 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: