如何避免在活动的管理员操作项和控制器操作中使用通用代码。 我见过人们曾经在控制器和活动的admin操作项中编写相同的代码。 有什么办法可以避免吗?
示例就像我要取消一个用户,它需要3-4个步骤才能完成。 所以我已经在用户控制器中编写了此代码。
现在我在主动管理员中拥有资源用户,我想从主动管理员中删除该用户。我已经创建了一个动作项,并再次在成员动作中编写了相同的代码来删除用户。
有什么办法可以避免上述情况?
答案 0 :(得分:0)
如果您想在不同的控制器之间共享代码,则应着眼于https://api.rubyonrails.org/v5.2.2/classes/ActiveSupport/Concern.html
答案 1 :(得分:0)
假设这在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
让我知道这是否使您感到困惑。祝好运!
P.S。几周前有人问类似的问题,这可能也有帮助:How to reset user´s password by Devise authentication token directly from edit_page in Active Admin?