Рельсовые маршруты с чистыми URL - PullRequest
1 голос
/ 08 марта 2011

Моя проблема в том, что я хочу удалить часть строки запроса этого URL и сделать ее чистой.

http://staging.mysite.com/mycontroller?name=/philippines/about-manila

В настоящее время у меня есть MyController.index(), и я анализирую параметр имени в этом методе.

То, что я в конечном итоге хотел бы, это:

http://staging.mysite.com/mycontroller/philippines/about-manila

часть параметра 'philippines/about-manila' может иметь произвольное количество параметров, например

http://staging.mysite.com/mycontroller/philippines/about-manila/people

Как я могу сделать это на маршрутах?

Ответы [ 3 ]

4 голосов
/ 08 марта 2011

Звучит так, как вы хотите маршрутизация . Если вы используете:

map.my_route '/mycontroller/*parts',
             :controller => :mycontroller,
             :action => :index

и затем перейдите по URL http://staging.mysite.com/mycontroller/philippines/about-manila/people,, тогда будет вызвано действие index вашего контроллера mycontroller, и params[:parts] будет содержать массив ["philippines", "about-manila", "people"].

2 голосов
/ 08 марта 2011

Это действительно произвольно - или просто переменная?

Если это просто переменная, вы можете заключить необязательные параметры в скобки:

match '/:city(/:section(/:subsection))', :controller => :mycontroller,
    :action => :index

Для Rails 2.x:

map.connect '/:city(/:section(/:subsection))', :controller => :mycontroller,
    :action => :index
1 голос
/ 08 марта 2011

Для Rails 2.x вы можете использовать

map.my_route '/:my_param', :controller => :mycontroller, :action => :index

Тогда в вашем контроллере вы можете получить доступ

params[:my_param]

Если вам нужны ссылки, просто перейдите с

my_route_path(:my_param => "mytekst")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...