我试图在我的控制器中调用一个方法来更改对象上的布尔值。基本上用户点击“验证”,这被称为:verify_business_path(b)
我在 URL users/id/dashboard。根据日志,它传递了正确的 ID 并调用了 URL 业务/id/verify。这两个网址中的 ID 不同。然后调用验证方法:
def verify
@business = Business.find(params[:id])
if current_user.admin?
@business.update_attribute(:verified, true)
if @business.save
redirect_to dashboard_user_path(current_user.id)
else
redirect_to destroy_user_session
end
end
# save, render, etc
end
这得到的ID是错误的。它获取的是用户 ID,而不是您在日志中看到的业务 ID:
Started GET "/businesses/30/verify" for 127.0.0.1 at 2013-07-10 15:22:20 +0100
Processing by BusinessesController#verify as HTML
Parameters: {"id"=>"30"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 13 LIMIT 1
Redirected to http://localhost:3000/users/13/dashboard
Filter chain halted as :check_if_admin rendered or redirected
Completed 302 Found in 4ms (ActiveRecord: 0.6ms)
如何获得验证方法以使用业务 ID 而不是用户 ID?
谢谢
编辑:
您可以在日志中看到它在第 3 行传递了正确的参数(业务 ID),但在第 4 行使用错误的参数(当前用户 ID)运行查询。