使用用户 ID 设计路由中的未定义方法

Undefined Method in Devise Routes with User ID

目前我有一个典型的设计安装,但我已经将用户 ID 添加到具有 current_user 可用的路由。但是我在尝试登录该服务时收到如下错误。

错误

NameError in Devise::SessionsController#create

undefined local variable or method `offers_path' for #<Devise::SessionsController:0x007f0e80ec7a08>

  def after_sign_in_path_for(resource)
    offers_path
  end

routes.rb

devise_for :users

resources :users do
  resources :offers do
    member do
       put :tourcomplete
    end   
  end
end

佣金路线

 tourcomplete_user_offer PUT    /users/:user_id/offers/:id/tourcomplete(.:format) offers#tourcomplete
             user_offers GET    /users/:user_id/offers(.:format)                  offers#index
                         POST   /users/:user_id/offers(.:format)                  offers#create
          new_user_offer GET    /users/:user_id/offers/new(.:format)              offers#new
         edit_user_offer GET    /users/:user_id/offers/:id/edit(.:format)         offers#edit
              user_offer GET    /users/:user_id/offers/:id(.:format)              offers#show
                         PATCH  /users/:user_id/offers/:id(.:format)              offers#update
                         PUT    /users/:user_id/offers/:id(.:format)              offers#update
                         DELETE /users/:user_id/offers/:id(.:format)              offers#destroy
                   users GET    /users(.:format)                                  users#index
                         POST   /users(.:format)                                  users#create

不太确定这是否是将用户 ID 放入登录路由的最佳方式。希望在这个问题上得到任何帮助。

看到你的路线,你没有任何 offers_path 但你正在尝试使用它,这就是你收到此错误的原因。

您应该尝试使用 user_offers_path 并将 user 作为参数传递,如下所示:

user_offers_path(@user)