导轨4.1.1
我有一个OrdersController,在订单显示操作中我有...
orders_controller.rb
def show
@order = Order.find(params[:id])
@client = Client.find(@order.client_id)
if request.post?
OrderMailer.order_send(@client, @order).deliver
flash[:notice] = 'Order details sent!'
redirect_to order_path(@order.id)
end
end
然后我认为...
(show.haml)
= button_to "Send", @order
如果我从if语句中取出“ OrderMailer”并访问显示/订购页面,则电子邮件将反复发送,直到关闭开发服务器为止,这样我就知道邮件发送器可以发送/正常工作了。
我只是不确定如何将按钮单击/发送电子邮件绑定在一起?我需要一条路线,但是如果我已经有订单/显示页面的路线,则不确定如何将其绑在一起?
routes.rb
resources :orders, :path => 'orders'
OK,在@steel的帮助下,这里是代码。
route.rb(已更改为符号开始)
get :send_order_mail, to: 'orders#send_order_mail', as: :send_order_mail
orders_controller.rb
def send_order_mail
@order = Order.find(params[:id])
@client = Customer.find(@order.client_id)
OrderMailer.order_send(@order, @client).deliver
flash[:notice] = "Order has been sent."
redirect_to order_path(@order.id)
end
orders / show.html.erb上有链接。
<%= link_to "Send Order by email", :controller => "orders", :action => "send_order_mail", :id => @order.id %>
mailers / order_mailer.rb
class OrderMailer < ActionMailer::Base
add_template_helper(OrdersHelper)
default from: "[email protected]"
def order_send(order, client)
@order = order
@client = client
mail(to: "#{@client.email}", subject: "Your subject")
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句