首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails -按一下按钮发送电子邮件

Rails -按一下按钮发送电子邮件
EN

Stack Overflow用户
提问于 2014-06-18 13:03:57
回答 2查看 7.1K关注 0票数 2

rails 4.1.1

我有一个OrdersController,在命令中我有.

orders_controller.rb

代码语言:javascript
复制
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)

代码语言:javascript
复制
= button_to "Send", @order

如果我从If语句中取出"OrderMailer“并访问show/ order页面,邮件会被反复发送,直到我关闭dev服务器,这样我才知道邮件发送/工作正常。

我只是不知道如何把按钮按/发电子邮件在一起?我需要一个路线,但不知道如何将它连接在一起,如果我已经有一个路线的订单/显示页?

routes.rb

代码语言:javascript
复制
resources :orders, :path => 'orders'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-19 15:27:03

好的,在钢的帮助下,这是代码。

Routes.rb(更改开始为符号)

代码语言:javascript
复制
get :send_order_mail, to: 'orders#send_order_mail', as: :send_order_mail

orders_controller.rb

代码语言:javascript
复制
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上有链接。

代码语言:javascript
复制
<%= link_to "Send Order by email", :controller => "orders", :action => "send_order_mail", :id => @order.id %>

邮递员/订购邮件.

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2014-06-18 20:21:21

我不知道如何使您当前的方法工作,但是有几种方法可以做到这一点。我用过一种方法:

设置控制器操作:

代码语言:javascript
复制
orders_controller.rb

def send_order_mail
  @parameters = Model.get_parameters
  OrderMailer.name_of_action(@parameters).deliver
  # redirect code here
end

设置你的路线:

代码语言:javascript
复制
get send_order_mail, to: 'orders_controller#send_order_mail', as: :send_order_mail

那就建立你的链接。

代码语言:javascript
复制
link_to 'Send mail', send_order_mail_path, class: "big-button"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24286359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档