Рисование маршрутов с использованием имени пользователя в Rails 3 с устройством - PullRequest
4 голосов
/ 23 декабря 2010

Учитывая отношения один-ко-многим между пользователем, управляемым с помощью devise и "вещью", моя цель - нарисовать спокойные маршруты, такие как:

http://host/username
http://host/username/things
http://host/username/things/1
...

Мне известно о вложенных ресурсах в маршрутах Rails, но я не могу понять, как применить его к общей модели User, созданной и управляемой с помощью devise.

Ответы [ 2 ]

13 голосов
/ 23 декабря 2010

Вы можете использовать scope для этого:

scope ":username", :as => "user" do
  resources :things
end

Объедините это с to_param на модели пользователя:

def to_param
  username
end

И у вас будут такие маршруты, как /username/things. Будьте осторожны, хотя имя пользователя не должно содержать точек, косой черты или стандартных символов URI. Вы можете бросить parameterize на конец username, чтобы убедиться.

0 голосов
/ 06 января 2014

Вы также можете использовать resource :user, path: ':id' do ... end

Также не забудьте определить to_param в вашем пользовательском модале и использовать User.find_by_username(params[:id]) в вашем контроллере.

...