RoR Маршрут проблемы.Города в начале URL - PullRequest
0 голосов
/ 20 марта 2011

У меня много таких ссылок: / Статьи / ... / Альбомы / ... /фото/... и т.д.

Мне нужно использовать название города в начале URL, если пользователь выбрал его: / City_name / статьи / ... / City_name / альбомы / ... /city_name/photos/...

Но предыдущие ссылки тоже работают (/ Articles / ..., /albums/...)

Я пробовал это:

map.articles '/articles/', :controller => "zags", :action => "cities", :using_city => 1
map.articles '/:city_url/articles/', :controller => "zags", :action => "cities", :using_city => 1

<%= link_to "London articles", articles_path, { :city_url => "london", :using_city => 1 } %>

Но это не работает. Что я должен изменить? Я знаю, что могу изменить одно из имен карт «map.articles», но я хочу использовать те же имена маршрутов в моем коде View. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 20 марта 2011

Вы должны быть в состоянии сделать это по одному маршруту:

map.articles '(/:city)/articles', :controller => 'zags', :action => 'cities'

<%= link_to "Articles", articles_path %>
<%= link_to "London Articles", articles_path(:city => "london") %>
0 голосов
/ 20 марта 2011

Полагаю, вы просто неправильно создали свой URL. Это должно быть как:

<%= link_to "London articles", articles_path(:city_url => "london", :using_city => 1) %>

Вы можете также столкнуться с путями к вашим статьям, потому что вы используете map.articles дважды. Возможно, второй может быть map.articles_by_city ... для правильного именования. И в этом случае ваша ссылка изменится так:

<%= link_to "London articles", articles_by_city_path(:city_url => "london", :using_city => 1) %>

Кстати, если вы используете рельсы 3, я предлагаю следующее определение маршрута.

match "(:city_url/)articles/", :controller => "zags", :action => "cities", :using_city => 1, :as => "articles"

Это настраивает для вас оба случая, поэтому :city_url стал необязательным параметром. В этом случае ваш путь будет articles_path, а URL будет выглядеть как /articles/.

Если вы передадите articles_path("london"), ваш URL будет выглядеть как /london/articles/

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...