我有一个用于跟踪内部设备的应用。一旦设备通过它发布的系统,我就会更新“Ticket”。我经历了很多联系表单教程,但它们并没有真正帮助,因为它们都基于gems或create方法。
下面的代码主要有效,但有两个明显的问题:@ ticket.tracking没有通过跟踪来显示在电子邮件中,它正试图找到链接的模板,当它应该只执行操作然后重定向回到编辑页面。
形式:
<%= form_for(@ticket, url: send_tracking_mail_path(@ticket)) do |tickettracking| %>
<%= tickettracking.text_field :tracking %>
<%= tickettracking.submit 'Submit Tracking', class: "btn btn-primary btn-mini", style: "float: right;" %>
<% end %>
票务管理员:
def send_tracking_mail
@ticket = Ticket.find(params[:id])
TrackingMailer.tracking(@ticket).deliver_now
flash[:notice] = "Ticket tracking has been sent."
end
追踪梅勒:
class TrackingMailer < ApplicationMailer
def tracking(ticket)
@ticket = ticket
mail(to: @ticket.customer.email, subject: "Tracking for #{ticket.name}")
end
end
路线:
patch 'send_tracking_mail.:id', to: 'tickets#send_tracking_mail', as: :send_tracking_mail
电子邮件会发送但不会为&lt;%= @ ticket.tracking%&gt;
呈现任何内容Your Device Has Been Shipped with tracking <%= @ticket.tracking %>
编辑: 我在电子邮件方法中遗漏了几行
def send_tracking_mail
@ticket = Ticket.find(params[:id])
@ticket.update(ticket_params)
TrackingMailer.tracking(@ticket).deliver_now
redirect_to edit_ticket_path(@ticket)
end