Ruby 用小马和西纳特拉发送邮件
我正在尝试从一个联系表单(内置HTML)发送一封电子邮件,其中包含sinatra内的小马宝石,我已经按照文档进行了操作,但肯定缺少一些东西 这是小马配置Ruby 用小马和西纳特拉发送邮件,ruby,forms,email,sinatra,pony,Ruby,Forms,Email,Sinatra,Pony,我正在尝试从一个联系表单(内置HTML)发送一封电子邮件,其中包含sinatra内的小马宝石,我已经按照文档进行了操作,但肯定缺少一些东西 这是小马配置 get '/contact' do erb :contact, :layout => :layout end post '/contact' do require 'pony' Pony.mail({ :from => params[:name], :to => 'myemailaddress',
get '/contact' do
erb :contact, :layout => :layout
end
post '/contact' do
require 'pony'
Pony.mail({
:from => params[:name],
:to => 'myemailaddress',
:subject => params[:name] + "has contacted you via the Website",
:body => params[:comment],
:via => :smtp,
:via_options => {
:address => 'smtp.gmail.com',
:port => '587',
:enable_starttls_auto => true,
:user_name => 'myemailaddress',
:password => 'mypassword',
:authentication => :plain,
:domain => "localhost.localdomain"
}
})
redirect '/success'
end
get('/success') do
@notification = "Thanks for your email. I'll be in touch soon."
erb :index, :layout => :layout
end
因此,单击“提交”后,将重新呈现联系人页面,而不显示任何消息
这是我的提交按钮
<button type="submit" class="btn" value="send">Submit</button>
提交
我是否在某个地方丢失了触发器?您确定您有表单设置来执行
post
?如果似乎正在刷新页面,表单
标记可能未正确设置。另外,要提交的按钮应该是类型为submit
的input
标记。HTML需要如下所示:
<form action="/contact" method="post">
<!-- your form elements go here -->
<input type="submit" value="Sign in">
</form>
您确定您有表单设置来执行
post
?如果似乎正在刷新页面,表单
标记可能未正确设置。另外,要提交的按钮应该是类型为submit
的input
标记。HTML需要如下所示:
<form action="/contact" method="post">
<!-- your form elements go here -->
<input type="submit" value="Sign in">
</form>
youwhere-right,我没有设置动作和帖子的愚蠢错误…现在它不喜欢:subject=>params[:name]+“已经通过网站与您联系”,它抛出了一个关于+Hmm的零类错误。似乎params[:name]
可能是nil
。确保将name
设置为name
的表单元素。像这样:
。此外,如果您想防止出现nil
指针错误,可以执行类似以下操作::subject=>“{params[:name]| |'Someone'}已通过网站与您联系”。如果没有传入name
参数,那么它将默认为Someone
。这正是我在那里遇到的问题,type=text,id=name,混淆在一起,再次感谢,如果没有指定属性,所有HTTP表单都会自动假定为method='POST'
。如果没有指定,表单也会发布到同一个url,这也使得定义路由变得更加容易。你是对的,我没有设置操作和发布的愚蠢错误…现在它不像:subject=>params[:name]+“已经通过网站与你联系”,它抛出了一个关于+Hmm的零类错误。看起来像params[:name]
可以是nil
。确保将name
设置为name
的表单元素。像这样:
。此外,如果您想防止出现nil
指针错误,可以执行类似以下操作::subject=>“{params[:name]| |'Someone'}已通过网站与您联系”。如果没有传入name
参数,那么它将默认为Someone
。这正是我在那里遇到的问题,type=text,id=name,混淆在一起,再次感谢,如果没有指定属性,所有HTTP表单都会自动假定为method='POST'
。如果未指定,表单也将发布到相同的url,这也使得定义路由变得更加容易。