【问题标题】:ActiveAdmin : member_action "approve" on User modelActiveAdmin:用户模型上的 member_action “批准”
【发布时间】:2016-09-19 10:23:43
【问题描述】:

我想在 ActiveAdmin 中的用户模型上添加一个名为批准的 member_action。我查看了文档,但一切都不一样,我对如何去做感到很困惑。到目前为止,我只显示了批准链接(在查看、编辑和删除旁边)。

管理员/用户.rb:

member_action :approve, method: :post do
    user = User.find params[:id]
    user.approve!
    redirect_to admin_user_path(user), notice: "Approved!"
  end

并显示链接:

actions defaults: true do |user|
    link_to 'Approve',approve_admin_user_path(user)
end

模型/user.rb:

def approve!
    update(bio_validee: true)
end

当我点击链接时,出现路由错误:

No route matches [GET] "/admin/users/21/approve"

rake routes 的作用如下(对于管理员/用户路由):

approve_admin_user POST       /admin/users/:id/approve(.:format)              admin/users#approve
        batch_action_admin_users POST       /admin/users/batch_action(.:format)             admin/users#batch_action
                     admin_users GET        /admin/users(.:format)                          admin/users#index
                                 POST       /admin/users(.:format)                          admin/users#create
                  new_admin_user GET        /admin/users/new(.:format)                      admin/users#new
                 edit_admin_user GET        /admin/users/:id/edit(.:format)                 admin/users#edit
                      admin_user GET        /admin/users/:id(.:format)                      admin/users#show
                                 PATCH      /admin/users/:id(.:format)                      admin/users#update
                                 PUT        /admin/users/:id(.:format)                      admin/users#update
                                 DELETE     /admin/users/:id(.:format)                      admin/users#destroy

我做错了吗?我要补充什么? 此外,我不知道我是否必须在

中使用 GET、POST 或 PUT

member_action :approve, method: :post

在这种情况下我真的不明白。

【问题讨论】:

  • rake routes 显示什么?
  • 我用 rake 路由返回的内容编辑了我的帖子

标签: ruby-on-rails ruby-on-rails-4 activeadmin


【解决方案1】:

试试这个:

member_action :approve, method: :put do
  resource.approve!
  redirect_to admin_user_path(resource), notice: "Approved!"
end

还有....

actions defaults: true do |user|
  link_to 'Approve',approve_admin_user_path(user), method: :put
end

【讨论】:

  • 很高兴为您提供帮助。此外,您可能需要查看批处理操作。它们对于这样的事情很有用,尤其是当管理员用户经常一次批准许多项目时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 2023-03-05
相关资源
最近更新 更多