【问题标题】:Sendgrid for ActiveAdmin用于 ActiveAdmin 的 Sendgrid
【发布时间】:2018-03-09 03:13:55
【问题描述】:

我有一个网站,目前在用户使用 sendgrid 注册后会向他们发送电子邮件。这一切都很好,但我无法弄清楚如何做到这一点:
当用户在我的网站上进行预订时(类似于开放表),将创建预订对象。然后我可以继续使用 Active Admin 并将预订状态更改为已接受。当我接受它时,我希望它自动向用户发送一封电子邮件。有人知道我该怎么做吗?我搜索了文档,但找不到与 Active Admin 相关的任何内容。我正在考虑在提交表单时采取行动,也就是使用 sendgrid ruby​​ (https://github.com/sendgrid/sendgrid-ruby) 更改预订状态。但是,我不知道该怎么做。有人可以帮我解决这个问题吗?

谢谢!

【问题讨论】:

    标签: ruby-on-rails activeadmin sendgrid sendgrid-api-v3 sendgrid-rails


    【解决方案1】:

    不会有任何预定义的库。 您必须在接受预订后调用发送邮件的方法。 在 admin/registration.rb 下,执行以下操作:

    controller do
      def accept
      # your accept logic
      end
    
      def send_mail
      # mail sending logic.
      end
    end
    

    您必须在接受逻辑之后调用 send_mail 方法,或者您可以在接受此注册后使用回调来调用 send_mail。

    【讨论】:

    • 对不起,我对 Rails 不太熟悉。接受函数将如何被调用?我可以这样做,以便在提交表单时调用该函数吗?
    • 是的,当您在活动管理员上单击接受链接时会调用它
    【解决方案2】:

    ActiveAdmin 基于 Rails 构建,因此您可以使用 ActionMailer,例如。

    action_item :accept_reservation do
      link_to 'Accept reservation', accept_reservation_customer_path(resource)
    end
    
    member_action :accept_reservation do
      UserMailer.reservation_accepted(resource).deliver_now
      resource.update_attributes!(accepted_at: Time.now)
      redirect_to( {action: :show}, {notice: "Customer email sent."} )
    end
    

    ActionMailer 可与各种邮件递送服务一起使用,SendGrid has some explanatory documentation

    【讨论】:

    • 您好,感谢您的回复!在这种情况下,成员操作是否会创建一个新的 url,最后是“acceptreservation”?我该如何做到这一点,以便在有人提交活动管理表单时调用此请求?
    • 使用 action_item 添加一个按钮/链接到 member_action。
    • 嗨,抱歉,快速提问,accept_reservation_customer_path(customer) 是做什么的?
    • accept_reservation_customer_path 是一个自动生成的 URL 帮助程序,它将返回类似“/admin/customers/1/accept_reservation”的内容
    • 哦,但它不是功能所必需的,对吧?因为我收到客户未定义的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    相关资源
    最近更新 更多