Как мне заставить мой UsersController работать с current_user? - PullRequest
0 голосов
/ 09 декабря 2011

Пользователи могут просматривать и редактировать информацию об учетной записи в моем приложении, используя UsersController

Этот контроллер отображает только информацию о текущем пользователе.

Я хочу настроить маршруты так, чтобы:

  • get /account доступ UsersController#show, идентификатор_пользователя извлекается из current_user переменной

  • get /account/edit аналогичный доступ UsersController#edit

  • put /account/ ударит UsersController#update, снова используя current_user вместо ID

По сути, я хочу ссылаться на UsersController как «учетную запись» в моих URL-адресах и не хочу использовать идентификаторы, потому что я всегда просто использую текущего пользователя. Я также не хочу, чтобы URL, такие как / users / 1, функционировали вообще.

Как мне этого добиться?

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Я думаю, что вы говорите о единичных ресурсах.

http://guides.rubyonrails.org/routing.html#singular-resources

# Not sure if you need this
resource :users, :only => [:index, :create, :destroy]    

# This is what you are looking for
resource :user, :as => :account, :only => [:show, :edit, :update]

Обновление

Поскольку вам нужен "/ account" вместо "/ user«Вы должны сделать

resource :account, :controller => :users, :only => [:show, :edit, :update]
0 голосов
/ 09 декабря 2011

Два способа сделать это:

  1. В вашем route.rb:

    ресурсы: пользователи,: as => 'account'

  2. В вашем route.rb удалите ресурсы: users и добавьте:

    match '/ account' => 'users # show' match '/ account/ edit '=>' users # edit 'match' / account / '=>' users # update '

0 голосов
/ 09 декабря 2011

Учитывая ваши настройки, у вас, вероятно, есть что-то подобное в вашем routes.rb:

resources :users

Вы можете просто изменить это на:не проверял, но это должно работать.Для получения дополнительной информации обратитесь к руководству Rails о маршрутизации .

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