如何避免在活动的管理操作项和控制器操作中使用公共代码。我见过人们习惯于在控制器和活动管理操作项中编写相同的代码。有什么方法可以避免它吗?
例如,我想要取消一个用户,它需要3-4个步骤来做。所以我在用户控制器中写下了这段代码。
现在,我在活动管理中有了资源用户,我想从活动管理中删除该用户。我已经创建了一个操作项,并再次编写了在成员操作中删除用户的相同代码。
有没有办法避免上面提到的。
发布于 2019-02-19 00:34:57
如果你想在不同的控制器之间共享代码,你应该看看rails的关注点https://api.rubyonrails.org/v5.2.2/classes/ActiveSupport/Concern.html
发布于 2019-02-19 20:53:07
假设这是在User寄存器块中(可能在app/admin/users.rb中),这可能会对您有所帮助。action_item只包含一个指向实际member_action的链接(实际上是一个发布的表单)。这只是示例代码:
action_item :cancel_user, :only => :edit do
link_to 'Cancel user', do_cancel_user_admin_user_path(resource), method => :post
end
member_action :do_cancel_user, :method => :post do
flash.notice = "User will be canceled"
resource.cancel # I guess this would the 4 lines of code that you are repeating
redirect_to edit_admin_user_path(resource) and return
end请让我知道这是否让您感到困惑。祝好运!
附注:几周前,有人问了类似的问题,这可能也会有所帮助:How to reset user´s password by Devise authentication token directly from edit_page in Active Admin?
https://stackoverflow.com/questions/54744652
复制相似问题