加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:51:23 所属栏目:百科 来源:网络整理
导读:我正在尝试将Devise与RESTful用户资源结合使用routes.rb文件中的以下代码: resources :users,:only = [:index,:show]devise_for :users 然而,url localhost:3000 / users / sign_up不会进入设计注册页面,而是产生错误“找不到ID = sign_up的用户”,因此它
我正在尝试将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的路由优先于任何以后指定的路由,并且你会得到预期的行为.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读