【发布时间】: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
【问题讨论】:
-
在你的视图中试试这个:
<%= form_tag sendpricelist_path do %>(source) -
@NoamHacker 在我提交表单之前仍会发送电子邮件。干杯。
-
ActionController::RoutingError (没有路由匹配 [GET] "/requests/12/sendpricelist"):
标签: ruby-on-rails forms email controller routes