Ruby on rails маршрутизация соответствует имени пользователя - PullRequest
2 голосов
/ 10 апреля 2011

Я уверен, что есть простое решение, но я не могу найти его.

Я хочу сопоставить следующее динамическое имя пользователя:

 /users/dymanicUsername

Как бы это выглядело вways.rb

Спасибо за любую помощь.

Ответы [ 2 ]

5 голосов
/ 10 апреля 2011

allister,

Чтобы сделать это, просто переопределите to_param в вашей модели.Например:

#users.rb

def to_param
  self.username
end

Вскоре вы столкнетесь с некоторыми проблемами:

  • конфликтует с существующими маршрутами.Например, имя пользователя не должно быть «новым», верно?
  • для получения вашего пользователя в контроллере, вы должны создать метод (это то, что я сделал, может быть, не лучшее решение) в вашей модели, какthis self.find_for_controller (имя пользователя)
  • ваше имя пользователя должно содержать только символы с поддержкой URL (забудьте акценты, знаки препинания и т. д.).Решением для этого является наличие второго атрибута с именами username_urlized, который, конечно, должен быть уникальным и не конфликтовать с другими маршрутами

И, возможно, с другими проблемами:)

Также,если вы хотите что-то вроде твиттера (yoursite.com/dynamicUserName), выполните следующие действия в router.rb:

resources :users, :path=>'' do
1 голос
/ 10 апреля 2011

Вот хорошее объяснение 2006 года, которое выглядит хорошо для Rails 2.3. *: http://garrickvanburen.com/archive/using-names-in-rails-routes-instead-of-ids

Основные проблемы, которые я вижу, состоят в том, что вы хотели бы обеспечить не только все вышеперечисленное, что Марсель упоминает,но это имя уникально.то есть поместите индекс для имени с :unique => true в миграции.

Для rails3, который я сейчас обновляю, вы бы сделали маршрутизацию иначе.Например, map.connect заменяется на match.

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