【问题标题】:Devise routing, i get "Something went wrong" error设计路由,我收到“出了点问题”错误
【发布时间】:2012-11-23 10:22:13
【问题描述】:

我是 Rails 新手,但在使用设计解决 Rails 3 中的路由时遇到了麻烦

当我转到用户页面时,我收到了这个丑陋的错误:http://s9.postimage.org/nlyxhlk5b/Devise_routing.png

在我的路线中

#Resources for users

devise_for :users, :controllers => { :registrations => "registrations" }

resource :users do
  get 'welcome'
end

这些是我的用户路线

更新

                       root        /                                               members#welcome
           new_user_session GET    /users/sign_in(.:format)                        devise/sessions#new
               user_session POST   /users/sign_in(.:format)                        devise/sessions#create
       destroy_user_session DELETE /users/sign_out(.:format)                       devise/sessions#destroy
              user_password POST   /users/password(.:format)                       devise/passwords#create
          new_user_password GET    /users/password/new(.:format)                   devise/passwords#new
         edit_user_password GET    /users/password/edit(.:format)                  devise/passwords#edit
                            PUT    /users/password(.:format)                       devise/passwords#update
   cancel_user_registration GET    /users/cancel(.:format)                         devise/registrations#cancel
          user_registration POST   /users(.:format)                                devise/registrations#create
      new_user_registration GET    /users/sign_up(.:format)                        devise/registrations#new
     edit_user_registration GET    /users/edit(.:format)                           devise/registrations#edit
                            PUT    /users(.:format)                                devise/registrations#update
                            DELETE /users(.:format)                                devise/registrations#destroy

我不应该有 2 个用户资源吗?我相信他们可能会以某种方式发生冲突,或者我只是错过了什么?

更新

我忘了提到我正在覆盖默认的设计注册控制器

 class RegistrationsController < Devise::RegistrationsController
  protected

  # Redirect to welcome page after a successful registration
  def after_sign_up_path_for(resource)
    '/users/welcome'
  end
 end

【问题讨论】:

  • 我不确定您为什么要设置资源:用户执行登录、登录和登录。事实上,除非您覆盖设计控制器,否则您只需要 devise_for :users
  • 好吧,我制作了一个用户脚手架,并为用户制作了路线,我不记得他们在哪里,但我只是想确定我使用的是设备的 :) 是的,我正在覆盖设计注册控制器,因为我想路由到我的 welcome 页面,而不是成功用户注册时的默认页面 - 使用注册控制器更新帖子
  • 你在使用 :confirmable 吗?
  • 如果不是,你可以在你的路由中使用它,经过身份验证:user do root :to => 'controller#action' end
  • 看看注册控制器的默认行为,在设计github.com/plataformatec/devise/blob/master/app/controllers/… 中创建操作,您应该看到它有自己的未确认帐户路径,可以修改这个并让设计处理为您安排的路线

标签: ruby-on-rails-3 routing devise


【解决方案1】:

删除用户控制器 删除注册控制器

删除

resource :users do
get 'welcome'
end

将此添加到您的路线中

# Directing the user after login
 authenticated :user do
root :to => 'recipes#index'

结束

改变

devise_for :users, :controllers => { :registrations => "registrations" }

devise_for :users

让我知道这是怎么回事

【讨论】:

  • 是的,我正在尝试,但我不得不问 - 为什么是“食谱”?我没有那个名字的控制器/动作:P
  • 对不起,这就是我的项目的路径,哈哈,这基本上是你的控制器/动作。您必须创建一个新控制器来显示您的欢迎页面或将欢迎操作添加到另一个控制器
  • 嗯这对我来说不太好,现在我从 webbrick 服务器Completed 500 Internal Server Error in 49ms 收到这条消息,我收到路由错误No route matches {:action=&gt;"show", :controller=&gt;"users", :id=&gt;nil} 该死的哈哈
  • 我们不需要您通过脚手架设置的用户控制器,devise 有自己的用户设置。现在将欢迎操作放在您的其他控制器之一中,并按照我在您的描述中描述的方式进行根植路线
  • 好吧,它现在可以工作了,我可以登录/注销,但我现在如何才能访问我的用户控制器索引? No route matches [GET] "/users"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
  • 1970-01-01
相关资源
最近更新 更多