Как я могу использовать дружественный идентификатор в Rails, такой как mysite.com/[USERNAME] - PullRequest
5 голосов
/ 12 марта 2010

Как я могу использовать дружественные URL в своем приложении Rails? Все, что мне нужно, это сделать доступным следующий формат URL

mysite.com / Company1 mysite.com/user123 mysite.com/user1234 mysite.com/newton.garcia mysite.com/company-name

Может кто-нибудь помочь?

Ответы [ 2 ]

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

Я уже задавал этот вопрос на Quora ..

http://www.quora.com/How-does-Quora-rewrite-their-urls

Для тех, кто действительно заинтересован в реализации таких ссылок, как Quora / Facebook. Вот совет в Rails3:

Составьте таблицу с именем slugs:

#  slug | model_id |  model
# ===========================
# simple data:
#  one  |    2222    |  post
#  two  |    1111    |  user
#  six   |    5432    |  comment

Теперь в rout.rb добавьте эту строку внизу:

match '/:id', :to => proc { |env|
  id = env["action_dispatch.request.path_parameters"][:id]
  model = Slug.find_by_slug(id).model
  controller = [model.pluralize.camelize,"Controller"].join.constantize
  controller.action("show").call(env)
}, :as => :slugable

Итак, если мы перейдем к /one в маршрутах, это будет означать:

id: one
so from the slugs table,
model: post
and the route will point to "posts#show"

Теперь в действии show на всех контроллерах

@something = Model.find_by_slug(params[:id])
0 голосов
/ 12 марта 2010

Для этого вы можете использовать гем под названием SubDomain-Fu . Посмотрите этот ролик для более подробной информации.

...