【发布时间】:2017-07-06 12:14:02
【问题描述】:
第一次发帖。 我试图让 mailgun 给我发一封电子邮件给新订阅者 但是当我填写表格时,它给了我 500 内部服务器错误和 TypeError。
错误日志
在 13 毫秒内完成了 500 个内部服务器错误(ActiveRecord:4.9 毫秒) TypeError(没有将 Symbol 隐式转换为 Integer):
app/controllers/contacts_controller.rb:9:in[]' app/controllers/contacts_controller.rb:9:increate'
我的 ContactsController 有问题吗?
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(contact_params)
if @contact.save
name = params[:contact][:name]
email = params[:contact][:email]
body = params[:contact][:comments]
ContactMailer.contact_email(name, email, body).deliver
flash[:success] = "Message sent."
redirect_to new_contact_path
else
flash[:danger] = @contact.errors.full_messages.join(", ")
redirect_to new_contact_path
end
end
private
def contact_params
params.require(:contact).permit(:name, :email, :comments)
end
end
contact_email.html.erb
<!DOCTYPE html>
<html>
<head></head>
<body>
<p>You have received a message from the site's contact form, from
<%= "#{ @name }, #{ @email }." %></p>
<p><%= @body %></p>
</body>
</html>
奇怪的是,如果我通过 cloud9 服务器在开发中运行我的代码,它运行良好,但在通过 heroku 服务器的生产中,它在尝试提交完全填写的联系我们表格后给我一个错误。 我也通过关注website 来学习如何编码。 问题在于第 78 课。
【问题讨论】:
-
检查
params。看起来params[:contact]返回Array而不是“哈希” -
params[:contact]是字符串或数组,它不是哈希。因此,当您执行params[:contact][:name]时,它并没有期待:name它期待一个整数。 -
能否请您发表您的观点,这将有助于确定您在构建
params时可能存在的问题
标签: ruby-on-rails heroku mailgun cloud9