【问题标题】:Undefined Method in Devise Routes with User ID使用用户 ID 设计路由中的未定义方法
【发布时间】:2015-10-15 20:29:44
【问题描述】:

目前我有一个典型的设计安装,但我已将用户 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 放入已登录路由的最佳方式。希望在这个问题上提供任何帮助。

【问题讨论】:

  • 发布完整的错误跟踪。另外,如果错误在您的视图中,请也发布视图代码。
  • 尝试将其更改为user_offers_path(resource)
  • 添加了完整的错误

标签: ruby-on-rails ruby ruby-on-rails-3 devise


【解决方案1】:

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

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

user_offers_path(@user)

【讨论】:

  • 嗨 KM,我目前正在获取(没有路线匹配 {:action=>"index", :controller=>"offers", :user_id=>nil} 缺少必需的键:[:user_id ] 在我的welcome_controller 中)。上面的代码还能用吗?
  • 你必须在参数中发送user_id,然后像这样抓住用户:@user = User.find(params[:user_id]),然后:user_offers_path(@user)。试试这个,让我知道。
猜你喜欢
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
相关资源
最近更新 更多