【问题标题】:Rails: why emails are sent before Users submit the form?Rails:为什么在用户提交表单之前发送电子邮件?
【发布时间】:2017-04-19 00:21:25
【问题描述】:

我有一个向客户发送价目表的“静态表单”,我需要发送一封电子邮件,但表单中的 params[:pricelist_name] 为 nil。

我注意到电子邮件是在视图之前发送的,所以我想知道如何仅在用户提交表单之后发送电子邮件?

干杯,

控制器

  def sendpricelist
    @pricelist = params[:pricelist_name] || []
    @request_id = params["pricelist_name"] || []
    @test = "test"
    SaasMailer.pricelist_request_email(@pricelist, @test, @request_id).deliver_now
    #redirect_to :requests
end

查看

    <%= form_tag(:controller => "requests", :action => "sendpricelist") do %>
  <%= text_field(:post, :title, size: 69, class: 'form-control form-group-lg') %>


<%= select_tag 'pricelist_name', 
  options_from_collection_for_select(Pricelist.all, :id, :name) %>


    <%= submit_tag("Send pricelist")%>



<% end %>

路线

 devise_for :users
 resources :users
 resources :requests do
 resources :updates
match '/sendpricelist',      to: 'requests#sendpricelist',           via: 'get'

end

输出:

正如您在“主题:[] - [] - 测试”中看到的那样,参数为零。

Started GET "/requests/12/sendpricelist" for 127.0.0.1 at 2016-12-04 15:20:45 +0000
Processing by RequestsController#sendpricelist as HTML
  Parameters: {"request_id"=>"12"}
  Rendered saas_mailer/pricelist_request_email.html.erb within layouts/mailer (0.2ms)

SaasMailer#pricelist_request_email: processed outbound mail in 19.6ms

Sent mail to remyukjob@gmail.com (2012.5ms)
Date: Sun, 04 Dec 2016 15:20:45 +0000
From: from@example.com
Reply-To: remyukjob@gmail.com
To: remyukjob@gmail.com
Message-ID: <5844344d7cc60_23a33f8f3527db9467454@remy-Aspire-ES1-512.mail>
Subject: [] - [] - test
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html>
  <body>
    <!DOCTYPE html>
<html>
  <head>
    <meta content=3D'text/html; charset=3DUTF-8' http-equiv=3D'Content-Ty=
pe' />
  </head>
  <body>
    <h1><img src=3D"https://ci4.googleusercontent.com/proxy/HzK8rp8AJ2iFz=
l3q5Z2jtTKO4tCzMTfOJ9WT7CAzSVpHdXm676yMNYhbZzgrNSjFyzkChWQRdKCSZe7M-xrt6q=
IRl5wXoecqdqR3gUOINxF9CnwQoFC2YGQyG7FhdTAcWS9FNwRTDDh2KOkvTGxOOXOc=3Ds0-d=
-e1-ft#http://www.sweetconcepts.com/wp-content/themes/twentysixteen-child=
/assets/images/sc_logo.jpg" alt=3D"Sc logo" /></h1>
    <p>
      Bonjour Sandrine,
    </p>

     <p>
      Merci pour votre demande  nil.
      <br></br>
      J=E2=80=99ai joint en pi=C3=A8ce jointe les pricelists pour :
    </p>

      Pricelisttitle <a href=3D"https://s3.amazonaws.com/promosweetsdocs/=
Confirmation.pdf">Lien</a> =



  </body>
</html>
  </body>
</html>

  Pricelist Load (0.3ms)  SELECT "pricelists".* FROM "pricelists"
  Rendered requests/sendpricelist.html.erb within layouts/application (18.6ms)
Completed 200 OK in 2228ms (Views: 134.3ms | ActiveRecord: 2.8ms)


Started POST "/requests/12/sendpricelist" for 127.0.0.1 at 2016-12-04 15:20:51 +0000

【问题讨论】:

  • 在你的视图中试试这个:&lt;%= form_tag sendpricelist_path do %&gt; (source)
  • @NoamHacker 在我提交表单之前仍会发送电子邮件。干杯。
  • ActionController::RoutingError (没有路由匹配 [GET] "/requests/12/sendpricelist"):

标签: ruby-on-rails forms email controller routes


【解决方案1】:

我将路线更改为match '/sendpricelist', to: 'requests#sendpricelist', :via => [:get, :post]`

【讨论】:

    猜你喜欢
    • 2016-08-01
    • 2017-08-01
    • 2015-03-28
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2016-11-23
    相关资源
    最近更新 更多