2014-09-20 3 views
0
match '/main/*params', to: 'main#parse', :constraints => {:url => /.*/}, as: 'parser', via: 'get' 

params будет называться с /p1/p2/p3/p4/.Route подстановки с параметрами, содержащих слэшами

Как изменить определение маршрута, чтобы иметь возможность выйти из одного параметра /p1//p3/p4/ и до сих пор PARAMS содержит параметр, как он был введен (/p1//p3/p4/). Прямо сейчас params = p1/p3/p4/ с удаленной одной из косых черт.

Контроллер:

def parse 
    p = params[:params].split("/") 
    ... 
end 

ответ

0

Это ваш 'общий' маршрут:

/.*/ 

Это должно соответствовать не только/p1/p2/p3/p4, но любое число параметров

Вы можете попытаться объявить маршрут до вашего общего, с определенным количеством параметров, которое вы хотите:

/:parameter1/:parameter2/:parameter3 

Таким образом,/p1/p2/p4 будет соответствовать второму маршруту и ​​оставить перед сопоставлением общего маршрута. Аналогично,/p1/p2/p3/p4 пропускает маршрут 3 параметров, но попадает в общий маршрут.

+0

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

+0

Я вижу. Можете ли вы предоставить код контроллера, который обрабатывает параметры? Вот где вам нужно будет измениться. После того как я увижу, что я могу обновить свой ответ соответственно. –

+0

Я добавил действие на свой вопрос. Однако параметры поступают к контроллеру с параметром, который был удален. Итак, '//' становится '/' –

Смежные вопросы