如何让我的UsersController与current_user很好地协同工作?

时间:2011-12-09 02:54:27

标签: ruby-on-rails ruby-on-rails-3

用户可以使用UsersController

在我的应用中查看和修改帐户信息

此控制器仅显示有关当前用户的信息。

我想调整路线,以便:

  • get /account访问UsersController#show,从current_user变量中检索到user_id

  • get /account/edit同样访问UsersController#edit

  • put /account/会点击UsersController#update,再次使用current_user代替ID

基本上我想在我的网址中将UsersController称为“帐户”,我不想使用ID,因为我总是只使用当前用户。我也不希望像/ users / 1这样的网址能够正常运行。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

我认为你在谈论奇异的资源。

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]

答案 1 :(得分:0)

根据您的设置,您可能在routes.rb

中有类似的内容
resources :users

您应该可以将其更改为:

resources :users, :as => "account"

我没有测试过,但这应该有效。有关详细信息,请查看Rails guides on Routing

答案 2 :(得分:0)

两种方法:

  1. 在你的route.rb中:

      

    资源:用户,:as =>'accounts'

  2. 在您的route.rb中,删除资源:users并添加:

      

    匹配'/ account'=>'用户#show'   匹配'/ account / edit'=>'用户#edit'   匹配'/ account /'=>'用户#upcate'