rails 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“并访问show/ order页面,邮件会被反复发送,直到我关闭dev服务器,这样我才知道邮件发送/工作正常。
我只是不知道如何把按钮按/发电子邮件在一起?我需要一个路线,但不知道如何将它连接在一起,如果我已经有一个路线的订单/显示页?
routes.rb
resources :orders, :path => 'orders'发布于 2014-06-19 15:27:03
好的,在钢的帮助下,这是代码。
Routes.rb(更改开始为符号)
get :send_order_mail, to: 'orders#send_order_mail', as: :send_order_mailorders_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)
endorders/show.html.erb上有链接。
<%= link_to "Send Order by email", :controller => "orders", :action => "send_order_mail", :id => @order.id %>邮递员/订购邮件.
class OrderMailer < ActionMailer::Base
add_template_helper(OrdersHelper)
default from: "mail@example.com"
def order_send(order, client)
@order = order
@client = client
mail(to: "#{@client.email}", subject: "Your subject")
end
end发布于 2014-06-18 20:21:21
我不知道如何使您当前的方法工作,但是有几种方法可以做到这一点。我用过一种方法:
设置控制器操作:
orders_controller.rb
def send_order_mail
@parameters = Model.get_parameters
OrderMailer.name_of_action(@parameters).deliver
# redirect code here
end设置你的路线:
get send_order_mail, to: 'orders_controller#send_order_mail', as: :send_order_mail那就建立你的链接。
link_to 'Send mail', send_order_mail_path, class: "big-button"https://stackoverflow.com/questions/24286359
复制相似问题