Rails Routing с параметром, который содержит точку - PullRequest
4 голосов
/ 22 декабря 2010

В более старых версиях Rails у вас может быть параметр, который включает точку (что-то обычно зарезервированное для отделения его от формата), например:

map.connect 'c/:domain.:format', :controller=>'home', :action=>'click_credit', :requirements => { :domain => %r([^/;,?]+) }

(хороший учебник здесь )

Однако в более современных версиях Rails (2.3.x) я вижу, что это дает сбой: домен перехватывает все, а формат пуст, когда приходит запрос на / c / amazon.com.html

Есть идеи, как его изменить?

Спасибо, Том

Ответы [ 2 ]

3 голосов
/ 22 декабря 2010

Обновление до рельсов 3 должно решить вашу проблему. Я попробовал ваш маршрут в rails 3, и он работал нормально (с небольшим изменением, чтобы использовать новый синтаксис маршрутизации):

match 'c/:domain.:format', 
      :controller=>'home', 
      :action=>'click_credit', 
      :domain => %r([^/;,?]+)
# 'c/amazon.com.html' => domain: amazon.com , format: html

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

map.connect 'c/:domain.:format', 
            :controller=>'home', 
            :action=>'click_credit', 
            :domain => %r([^/;,?]+)
0 голосов
/ 22 декабря 2010

Вам необходимо изменить домен на slug и заменить любой [period] на [slash].

Причина в том, что браузеры ожидают.чтобы определить тип файла, и вы не можете обойти это.

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

...