【发布时间】:2019-07-16 16:00:05
【问题描述】:
我在 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 交给该方法,以便它知道在发送电子邮件时要处理哪些记录/数据。
关于如何创建运行此自定义方法 + 参数的按钮的任何提示?我在哪里定义这个新的自定义方法?
感谢您的帮助。
【问题讨论】:
-
我的回答对你有帮助吗?
-
是的,谢谢 - 太好了。但它还没有完全奏效。我在下面发表了评论。我想我用我的嵌套资源把它复杂化了。 (也不确定这是否最好作为成员或收集操作。)
-
如您所说,您需要记录 id,您别无选择,只能将其设为会员操作
-
没错。但该 ID 是用于嵌套在其上方的资源 - 因此用户已经选择了一个 support_allocation ID。现在他们正在查看当前支持分配(特定 ID)的所有 support_session(此页面上有很多,没有特定 ID)。我的自定义方法将发送一封电子邮件,其中包括当前支持分配的所有支持会话:即它发送一封不限于任何特定支持会话 ID 的电子邮件。
标签: ruby-on-rails ruby ruby-on-rails-5 activeadmin