我正在尝试创建关注/取消关注按钮,但我的索引操作中出现错误:
找不到没有ID的用户
users_controller.rb:
class UsersController < ApplicationController
before_filter :authenticate_user!
def index
@user = User.find(params[:id])
end
end
我发现params[:id]
是nil
。我是Rails的新手,我无法理解为什么它是nil
。
有谁能解释我做错了什么?
答案 0 :(得分:3)
如果您运行rake routes
,您会看到哪些路由占用id
哪些路由不占用,示例输出:
GET /photos index
GET /photos/new new
POST /photos create create
GET /photos/:id show
GET /photos/:id/edit edit
PUT /photos/:id update
DELETE /photos/:id destroy
所以在上面只有show
,edit
,update
和destroy
路线可以id
除非您更改了路线,否则index
通常用于集合,因此:
def index
@users = User.all # no id used here, retreiving all users instead
end
当然,您可以根据需要配置路线,例如:
get "users/this-is-my-special-route/:id", to: "users#index"
现在localhost:3000/users/this-is-my-special-route/12
将调用用户index
操作。虽然在这种情况下你最好创建一个与之对应的新路径和动作,而不是像那样改变索引。
您可以在routing in Rails here上阅读更多内容。