如何将动作'current_user'添加到宁静的'用户'?

时间:2010-06-20 03:36:06

标签: ruby-on-rails rest

我有一个模型'用户',它是一个宁静的资源,并且有默认方法,如'index,show,new,create'等。

现在,我想定义一个新动作'current_user',以显示当前登录用户的信息,这与'show'不同。

当我使用时:

link_to current_user.name, :controller=>'users', :action=>'current_user'

生成的网址为http://localhost:3000/users/current_user,错误消息为:

Couldn't find User with ID=current_user

我必须修改routes.rb吗?我该怎么办?

我搜索了一些文章,但仍然不知道。

3 个答案:

答案 0 :(得分:4)

添加

map.resources :users, :collection => {:current => :get}

然后,我使用:

link_to 'current', current_users_path()

生成的网址为:

http://localhost:3000/users/current

现在,一切都好。这是最好的解决方案吗?

答案 1 :(得分:2)

请参阅我对其他答案的评论以获得解释

map.current_user "users/current", :controller => :users, :action => :current

查看:

link_to 'current', current_user_path

答案 2 :(得分:1)

我不会为此添加新动作。我会检查传递给show方法的id。

class UsersController

 def show
   return show_current_user if params[:id] == "current"
   # regular show code
 end

private
 def show_current_user
 end

end

在视图中,在生成路径时使用:current作为用户ID。

user_path(:current)