[英]Rails: I installed ActiveAdmin and my devise link stopped working
我已經安裝好了。
我有一個鏈接: <%= link_to "Sign up", new_user_registration_path %>
當我安裝ActiveAdmin(對於現有模型User
)時,此鏈接停止工作:
undefined local variable or method `new_user_registration_path'
我使用git diff作為routes.rb
,這里是(添加的行是黑色的):
ActiveAdmin.routes(self)
devise_for :users
, ActiveAdmin::Devise.config
另外<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
現在導致/admin/logout
我怎么解決這個問題?
耙路線:
admin_dashboard /admin(.:format) {:action=>"index", :controller=>"admin/dashboard"}
admin_codes GET /admin/codes(.:format) {:action=>"index", :controller=>"admin/codes"}
POST /admin/codes(.:format) {:action=>"create", :controller=>"admin/codes"}
new_admin_code GET /admin/codes/new(.:format) {:action=>"new", :controller=>"admin/codes"}
edit_admin_code GET /admin/codes/:id/edit(.:format) {:action=>"edit", :controller=>"admin/codes"}
admin_code GET /admin/codes/:id(.:format) {:action=>"show", :controller=>"admin/codes"}
PUT /admin/codes/:id(.:format) {:action=>"update", :controller=>"admin/codes"}
DELETE /admin/codes/:id(.:format) {:action=>"destroy", :controller=>"admin/codes"}
admin_users GET /admin/users(.:format) {:action=>"index", :controller=>"admin/users"}
POST /admin/users(.:format) {:action=>"create", :controller=>"admin/users"}
new_admin_user GET /admin/users/new(.:format) {:action=>"new", :controller=>"admin/users"}
edit_admin_user GET /admin/users/:id/edit(.:format) {:action=>"edit", :controller=>"admin/users"}
admin_user GET /admin/users/:id(.:format) {:action=>"show", :controller=>"admin/users"}
PUT /admin/users/:id(.:format) {:action=>"update", :controller=>"admin/users"}
DELETE /admin/users/:id(.:format) {:action=>"destroy", :controller=>"admin/users"}
admin_comments GET /admin/comments(.:format) {:action=>"index", :controller=>"admin/comments"}
POST /admin/comments(.:format) {:action=>"create", :controller=>"admin/comments"}
new_admin_comment GET /admin/comments/new(.:format) {:action=>"new", :controller=>"admin/comments"}
edit_admin_comment GET /admin/comments/:id/edit(.:format) {:action=>"edit", :controller=>"admin/comments"}
admin_comment GET /admin/comments/:id(.:format) {:action=>"show", :controller=>"admin/comments"}
PUT /admin/comments/:id(.:format) {:action=>"update", :controller=>"admin/comments"}
DELETE /admin/comments/:id(.:format) {:action=>"destroy", :controller=>"admin/comments"}
new_user_session GET /admin/login(.:format) {:action=>"new", :controller=>"active_admin/devise/sessions"}
user_session POST /admin/login(.:format) {:action=>"create", :controller=>"active_admin/devise/sessions"}
destroy_user_session DELETE|GET /admin/logout(.:format) {:action=>"destroy", :controller=>"active_admin/devise/sessions"}
user_password POST /admin/password(.:format) {:action=>"create", :controller=>"active_admin/devise/passwords"}
new_user_password GET /admin/password/new(.:format) {:action=>"new", :controller=>"active_admin/devise/passwords"}
edit_user_password GET /admin/password/edit(.:format) {:action=>"edit", :controller=>"active_admin/devise/passwords"}
PUT /admin/password(.:format) {:action=>"update", :controller=>"active_admin/devise/passwords"}
root / {:controller=>"codes", :action=>"list"}
/:controller(/:action(/:id(.:format)))
我檢查了舊版本,路線是:
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
user_session POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
user_password POST /users/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel", :controller=>"devise/registrations"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"}
PUT /users(.:format) {:action=>"update", :controller=>"devise/registrations"}
DELETE /users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
您可能缺少的一件事是將您的用戶模型聲明為“可注冊”以獲取由Devise生成的注冊路由。
你應該有這樣的東西:
class User < ActiveRecord::Base
# Include devise modules
devise :database_authenticatable, :registerable, ...
我遇到過這個問題,這就是解決它的問題。
您似乎正在為普通用戶和管理員用戶使用相同的模型。 ActiveAdmin需要一個單獨的管理員模型。 嘗試恢復生成器所做的更改,然后運行:
rails generate active_admin:resource AdminUser
rake db:migrate
這將創建一個AdminUser
模型,該模型絕對不會與您網站的用戶建立鏈接。
在routes.rb中,指定devise_for:users這將恢復設計用戶路由
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.