ruby-on-rails - 在 Active Admin 中使用自定义方法自定义 action_item
问题描述
我在 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 交给该方法,以便它知道在发送电子邮件时要处理哪些记录/数据。
关于如何创建运行此自定义方法 + 参数的按钮的任何提示?我在哪里定义这个新的自定义方法?
谢谢您的帮助。
解决方案
您应该首先在文件中对操作进行编码:
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
推荐阅读
- python - 当模块已经安装时,获取烧瓶失败导入烧瓶-mysqldb的错误
- python - 无法加载keras的模型
- python - 我将如何下载 stackoverflow android 数据集?
- node.js - Firebase 实时数据库事务处理程序大部分时间被调用两次
- java - 如何从android中的两个文本框之一获取输入?
- python - 如果代理不工作或python出错,如何确保请求失败?
- javascript - 竖屏出现未知水平滚动条
- jquery-ui - 一次从左向右滑动选项以显示多行
- iis - 如何在 WIX 中进行重大升级时跳过“ConfigureIIs”操作
- firebase - 资产中的配置文件,但在播放模式下仍然出错