现在挣扎几个小时。在我最初制作自己的认证系统后,我将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
资源的色器件范围之外(这是我期望它应该去)我收到以下内容:
找不到设计映射路径“/想”
这里发生了什么?难倒!
谢谢。