【发布时间】:2021-11-20 18:07:00
【问题描述】:
我刚刚使用 Rails 6 构建了一个非常简单的邮件程序,当我部署到生产环境时弹出错误,说我丢失了用户参数丢失,仅供参考,只是一个带有表单的登录页面,您不必登录要发送任何内容,您只需填写它,我们就会通过电子邮件获取信息。 这是表单视图:
<div class="form">
<div class="row">
<%= form_for :contact, url: send_contact_path do |f| %>
<%= f.text_field :name, placeholder: "Full Name" %>
<%= f.text_field :email, placeholder: "Email Address" %>
<%= f.text_field :phone_number, placeholder: "Phone Number" %>
</div>
<div class="row">
<%= f.text_field :partner_name, placeholder: "Partner's Full Name" %>
<%= f.text_field :partner_email, placeholder: "Partner's Email" %>
<%= f.text_field :partner_phone, placeholder: "Partner's Phone" %>
</div>
<div class="row">
<%= f.select(:category, categories, placeholder: "Category") %>
<%= f.number_field :paid_amount, step: 0.01, placeholder: "Amount Paid" %>
</div>
<%= f.text_area :message, placeholder: "Anything you would want to say" %>
<%= f.submit "Send Info" %>
<% end %>
</div>
这里是控制器:
def create_contact
contact = User.new(contact_params)
if contact.save
send_contact(contact)
send_copy(contact)
flash[:success] = 'Message sent successfully!'
else
redirect_to root_path
flash[:notice] = 'Error, try again'
end
end
private
def contact_params
params.require(:user).permit(:name, :email, :phone_number, :partner_name, :partner_email, :partner_phone, :message, :amount_paid, :category)
end
def send_contact(contact)
mail = Mailjet::Send.create(messages: [{
"From"=> {
"Email"=>"email",
"Name"=>"name"
},
"To"=> {
"Email"=>"email",
"Name"=>"name"
},
"Subject"=>"subject",
"HTMLPart"=>template(contact)
}])
end
谢谢,我使用 pg 作为数据库,使用 mailjet 作为邮件服务
【问题讨论】:
-
日志中出现的实际错误是什么?
-
致命 -- : [dcc1dfcf-5bfb-4b59-9318-ddc30333a8e1] 2021-09-28T17:38:18.680224+00:00 app[web.1]: [dcc1dfcf-5bfb-4b59- 9318-ddc30333a8e1] ActionController::ParameterMissing(参数丢失或值为空:用户):
标签: ruby-on-rails parameter-passing mailer mailjet