ruby-on-rails – 将Devise与资源组合:Rails中的用户

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 将Devise与资源组合:Rails中的用户前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将Devise与RESTful用户资源结合使用routes.rb文件中的以下代码
resources :users,:only => [:index,:show]
devise_for :users

然而,url localhost:3000 / users / sign_up不会进入设计注册页面,而是产生错误“找不到ID = sign_up的用户”,因此它认为url指向的是显示操作用户控制器.
我发现交换行的顺序产生了预期的行为:

devise_for :users
resources :users,:show]

现在当你去本地主机:3000 / users / sign_up你确实得到注册页面,并且转到localhost:3000 / users / 1按照预期命中用户控制器的显示动作.

我的问题是:正在改变这样的代码顺序,以便与用户资源一起工作的正确方法?还是有更深层次的错误?我怀疑只是将这两行代码交换在一起不能解决

解决方法

我在这些情况下的建议是检查耙子路线
在路由中定义路由的顺序重要,因为较早的路由优先.

所以在你的情况下资源:users,:only => [:index,:show]创建了一个指向{:action =>“show”的一个restfull /users/:id(.:format)路由,controller =>“users”}
当你去Devise的注册URL /用户/注册它认为’注册’:用户的id,自然找不到它.

现在如果你先做设计路由设置,那么devise的路由优先于任何以后指定的路由,并且你会得到预期的行为.

猜你在找的Ruby相关文章