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的路由优先于任何以后指定的路由,并且你会得到预期的行为.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...