设计与发展MongoMapper& Rails - 看不到任何设计页面(损坏的路由/操作)

时间:2014-02-25 05:27:59

标签: ruby-on-rails-3 mongodb authentication devise mongomapper

当我尝试访问我的/ users / sign_up页面时,我收到“太多重定向”

Devise + MongoMapper + Rails 3.2.13

Too many redirects

rake routes:

                   users GET    /users(.:format)              users#index
                         POST   /users(.:format)              users#create
                new_user GET    /users/new(.:format)          users#new
               edit_user GET    /users/:id/edit(.:format)     users#edit
                    user GET    /users/:id(.:format)          users#show
                         PUT    /users/:id(.:format)          users#update
                         DELETE /users/:id(.:format)          users#destroy
        new_user_session GET    /users/login(.:format)        devise/sessions#new
            user_session POST   /users/login(.:format)        devise/sessions#create
    destroy_user_session DELETE /users/logout(.:format)       devise/sessions#destroy
           user_password POST   /users/reset(.:format)        devise/passwords#create
       new_user_password GET    /users/reset/new(.:format)    devise/passwords#new
      edit_user_password GET    /users/reset/edit(.:format)   devise/passwords#edit
                         PUT    /users/reset(.: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
                    root        /                             customers#index
               customers GET    /customers(.:format)          customers#index
                         POST   /customers(.:format)          customers#create
            new_customer GET    /customers/new(.:format)      customers#new
           edit_customer GET    /customers/:id/edit(.:format) customers#edit
                customer GET    /customers/:id(.:format)      customers#show
                         PUT    /customers/:id(.:format)      customers#update
                         DELETE /customers/:id(.:format)      customers#destroy

Rails服务器控制台只是一遍又一遍地吐出来:

Started GET "/users/sign_in" for 127.0.0.1 at 2014-02-24 21:10:01 -0800
Processing by UsersController#show as HTML
  Parameters: {"id"=>"sign_in"}
Completed 401 Unauthorized in 0ms

我在他们的自述文件中读到,Devise应该在我的控制器中制作一些辅助方法 - 除了生成器的标准7之外我什么都看不到。

似乎它正试图以“sign_in”登录,我当然没有指示它 - 这是一个全新的Rails应用程序,基本上只有一个模型 - 用户 - 和一个模型 - 客户 - 绝对没有数据或任何其他文件。字面上只是试图让这个Devise登录页面呈现 - 或注册页面 - 或任何页面。

这是我现在的整个routes.rb文件:

  resources :users

  devise_for :users

  root :to => "customers#index"

  resources :customers

当我有before_filter authenticate_user时会发生这种情况!在我的用户控制器中

所以,当我拿出那条线时 - 我只是尝试点击/ users / sign_up - 我得到以下内容:

No route matches {:action=>"edit", :controller=>"users", :id=>nil}

它应该重定向到这里:

  edit_user_registration GET    /users/edit(.:format)         devise/registrations#edit

控制器操作是:

def edit
    @user = User.find(params[:id])
  end

当然 - 因为我的数据库中根本没有任何东西 - @ user现在没有 - 这是问题吗?

人们如何让Devise开始?我从来没有成功地让这个愚蠢的事情发挥作用。

1 个答案:

答案 0 :(得分:0)

你应该有一行:

devise_for :users

在线上方:

resources :users

这是因为您需要先为模型设置Devise资源。

您还可以做的是将Devise路线重新映射到您自己的路线。您使用resources :users阻止替换 devise_scope。这是Documentation