我已经成功合并了设计,活动管理员和cancan,使用单个用户模型在我的Web应用程序的管理员和前端进行授权和身份验证,我有用户模型批准的布尔标志吗?所以他们可以发布他们的应用程序(数据库中已批准状态的真或假)。 现在我想“仅”通过管理页面批准用户。
in app\model\user.rb
def approve!
#set approved boolean state in database to true
approved = true
end
def disapprove!
#set approved boolean state in database to false
approved = false
end
在主动管理员中我有。
app\admin\user.rb
member_action :approve, :method => :put do
App.find(params[:id]).approve!
redirect_to [:admin, resource], :notice => "Developer Approved"
end
member_action :disapprove, :method => :put do
user = User.find(params[:id])
user.disapproved!
redirect_to admin_user_path(user), notice: "Successfully Disapproved Developer!"
end
这是列链接
column "Approve Developer" do |user|
if user.developer? && user.approved_developer?
link_to 'Disapprove Developer', "#"
elsif user.developer? && !user.approved_developer?
link_to 'Approve Developer',approve_admin_user_path
else
"Not A Developer"
end
end
运行rake路线显示我
approve_admin_user PUT /admin/users/:id/approve(.:format) admin/users#approve
disapprove_admin_user PUT /admin/users/:id/approve(.:format) admin/users#disapprove
一切似乎都很好但是当我加载页面并点击批准开发者链接或拒绝开发人员链接时我得到No route matches {:action=>"approve", :controller=>"admin/users"}
错误。
我还在routes.rb中将活动管理员的路由设置为ActiveAdmin.routes(self)
我也有resources :users
我仍然不知道我在这里做错了什么
非常感谢帮助
感谢
答案 0 :(得分:0)
试试这个
map.namespace :admin do |a|
a.resources :users, :member => {:approve => :get}
end
答案 1 :(得分:0)
在routes条目中可以看到,链接创建中缺少:id。试试这个:
link_to 'Approve Developer', approve_admin_user_path(:id => user.id)
如果服务器无法正常工作,请不要忘记重新启动服务器。
答案 2 :(得分:0)
我遇到了同样的问题,我想你可以解决你编辑这部分代码的问题:
link_to 'Approve Developer',approve_admin_user_path()
为:
link_to 'Approve Developer',approve_admin_user_path(user), :method => :put
link_to默认的http动词是GET,在我的情况下它完成了这项工作。