2013-06-19 26 views
0

现在挣扎几个小时。在我最初制作自己的认证系统后,我将Devise gem集成到了我的Rails项目中,但是我面临着一个我无法理解的问题。Ruby on Rails设计after_sign_in_path_for在不相关的控制器上调用

当方法用户登录:

def after_sign_in_path_for(resource_or_scope) 
    user = resource_or_scope 
    user_path(user.username) 
end 

被触发,将用户重定向到他们的个人资料。

我有一个编辑用户路线,它将用户带到一个页面,他们可以在其中编辑他们的详细信息并添加一个“想要的项目”。两个独立的表单,两个单独的控制器和操作。

“添加想要的项目”方法发布到另一个控制器,该控制器呈现名为WantsController的视图,并通过关联向用户添加通缉事项。

由于某种原因,在提交此表单时调用after_sign_in_path_for方法?它无关,与登录...

这里是我的路线:

#users/auth 
    devise_for :users, :skip => [:sessions, :registrations] 
    devise_scope :user do 

     # registration 
     get "/signup", to: "users#new", as: :sign_up 
     post "/signup", to: "users#create", as: :sign_up_create 

     # account 
     get "/:username/account", to: "users#edit", as: :user_account 
     put "https://stackoverflow.com/users/:id", to: "users#update", as: :user_update 

     # shows 
     get "/:username", to: "users#show", as: :user 
     get "/:username/interests", to: "users#interests", as: :user_interests 
     get "/:username/offers", to: "users#offers", as: :user_offers 
     get "/:username/trades", to: "users#trades", as: :user_trades 

     # auth 
     post "/signin" => 'devise/sessions#create', as: :sign_in 
     delete "/signout", to: "devise/sessions#destroy", as: :sign_out 

     #wants 
     resources :wants, only: [:create, :destroy] 

    end 

如果我放在wants资源的色器件范围之外(这是我期望它应该去)我收到以下内容:

找不到设计映射路径“/想”

这里发生了什么?难倒!

谢谢。

回答

0

唉,愚蠢的错误。为什么经过几个小时的挣扎之后,当你在Stack Overflow上发布一个问题时,你会在5分钟之后找出结果?!

我已经将我的RegistrationsController复制并粘贴到了要控制器文件中,以节省键入控制器代码,但忘记使其从ApplicationController而不是Devise :: RegistrationsController继承。

课程:不要复制和粘贴!