Ruby 用小马和西纳特拉发送邮件

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',

我正在尝试从一个联系表单(内置HTML)发送一封电子邮件,其中包含sinatra内的小马宝石,我已经按照文档进行了操作,但肯定缺少一些东西

这是小马配置

 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,这也使得定义路由变得更加容易。