Как встроить несколько тегов в маршруты Rails, например, переполнение стека - PullRequest
0 голосов
/ 29 марта 2010

Когда выбирается тег в переполнении стека, он добавляется в конец URL-адреса. Добавьте второй тег, и он будет добавлен в конец URL-адреса после первого тега с разделителем +. Например:

http://stackoverflow.com/questions/tagged/ruby-on-rails+best-practices

Как это реализовано? Это расширение маршрутизации или какая-то логика, содержащаяся в TagsController? Наконец, как можно «извлечь» эти теги для фильтрации (при условии, что они не находятся в массиве params[])?

Ответы [ 2 ]

1 голос
/ 30 марта 2010

Ответ Vojto правильный, но учтите, что вы также можете использовать Route Globbing на стороне сервера, чтобы справиться с этим чисто. Маршрут, определенный как /:controller/*tags, будет соответствовать /questions/ruby/rails/routing, а в questions_controller, params[:tags] будет массивом, содержащим ['ruby','rails','routing']. См. Маршрутные документы .

0 голосов
/ 29 марта 2010

Я думаю, что Rails не против, если params содержит символы типа +. Это означает, что вы можете получить доступ ко всем тегам в качестве одного аргумента, создать маршрут как: '/show/:tags'

Затем вы можете получить доступ к params[:tags], который будет выглядеть как 'ruby+rails'. Вы можете просто сделать 'ruby+rails'.split('+'), чтобы превратить его в массив.

Таким образом, вы можете легко добавить новый тег в этот массив и превратить его обратно в строку с помощью my_array_with_tags.join('+').

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