我在Active Admin中有一个嵌套资源,其中显示了特定SupportAllocation(定义了教师与学生的关系)的所有SupportSession(如会议):
ActiveAdmin.register SupportSession do
belongs_to :support_allocation
在我的索引页面上,我希望用户可以单击顶部的一个按钮(就像他们可以单击“新支持会话”一样),然后执行一个自定义方法,该方法使用ApplicationMailer发送电子邮件。按钮不会进入“页面”,它只会重定向回当前索引页面,并显示一条消息,指示是否成功。
我可以使用以下代码获得“请求批准”按钮以显示在索引页面上:
# Adds a new button
action_item only: :index do
link_to 'Request approvals', send_for_approval #custom method
end
但是显然这会引发一个例外:
undefined local variable or method `send_for_approval'
因为我没有在任何地方定义此自定义方法。
我已经创建了邮件程序类,但是不确定如何将其“连接”到我的资源。我意识到这将涉及某种新路线,或者使用现有的“放置”方法。我需要将当前的SupportAllocation ID传递给该方法,以便它在发送电子邮件时知道要处理哪些记录/数据。
有关如何创建运行此自定义方法+参数的按钮的任何提示?我在哪里定义这个新的自定义方法?
谢谢您的帮助。
答案 0 :(得分:1)
您应该首先在文件中编码操作:
member_action :send_for_approval, method: :patch do
# send your email here you can access to :resource which is your record
YourMailer.with(support_session_id: resource.id).your_email.deliver_now
# redirect to your admin index or show path
end
然后rails routes
将为您提供正确的路径,以便您可以将其传递给action_item
,它看起来像这样:
action_item only: :index do
link_to 'Request approvals', send_for_approval_admin_support_session_path, method: :patch
end
参考文献:
https://activeadmin.info/8-custom-actions.html#member-actions