当我尝试访问我的/ users / sign_up页面时,我收到“太多重定向”
Devise + MongoMapper + Rails 3.2.13
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开始?我从来没有成功地让这个愚蠢的事情发挥作用。
答案 0 :(得分:0)
你应该有一行:
devise_for :users
在线上方:
resources :users
这是因为您需要先为模型设置Devise资源。
您还可以做的是将Devise路线重新映射到您自己的路线。您使用resources :users
阻止替换 devise_scope
。这是Documentation。