rails 3.2使用活动管理员0.5.5 member_action获取路由错误

时间:2012-10-03 11:03:44

标签: ruby-on-rails ruby routes ruby-on-rails-3.2 activeadmin

我已经成功合并了设计,活动管理员和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我仍然不知道我在这里做错了什么 非常感谢帮助 感谢

3 个答案:

答案 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,在我的情况下它完成了这项工作。