我有一个模型'用户',它是一个宁静的资源,并且有默认方法,如'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
吗?我该怎么办?
我搜索了一些文章,但仍然不知道。
答案 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)