1

我试图创建关注/取消关注按钮,但我的索引操作中有错误:

找不到没有 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

谁能解释我做错了什么?

4

1 回答 1

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,updatedestroy路线可以采取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操作。尽管在这种情况下,您最好创建与其对应的新路由和操作,而不是像那样更改索引。

您可以在此处阅读有关 Rails 中路由的更多信息。

于 2013-05-12T07:00:51.527 回答