2

我已成功合并设计、活动管理员和 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"}错误。

我还为活动管理员设置了路由,如ActiveAdmin.routes(self)routes.rb 我也有一个resources :users 我仍然不知道我在这里做错了什么 非常感谢帮助 谢谢

4

3 回答 3

0

我有同样的问题,我想你可以解决你编辑这部分代码的问题:

 link_to 'Approve Developer',approve_admin_user_path()

至:

link_to 'Approve Developer',approve_admin_user_path(user), :method => :put

link_to 默认的 http 动词是 GET,就我而言,它完成了这项工作。

于 2013-09-01T14:55:31.310 回答
0

尝试这个

map.namespace :admin do |a|
   a.resources :users, :member => {:approve => :get} 
end
于 2012-10-03T11:13:26.523 回答
0

从路由条目中可以看出,链接创建中缺少 :id。尝试这个:

link_to 'Approve Developer', approve_admin_user_path(:id => user.id)

如果它不起作用,请不要忘记重新启动服务器。

于 2013-06-07T19:19:03.153 回答