Отправка почты с Пони и Синатрой

Я пытаюсь отправить электронное письмо из контактной формы (встроенной в HTML) с Pony Gem в 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>

Я где-то пропустил триггер?


person Richlewis    schedule 05.02.2013    source источник


Ответы (1)


Вы уверены, что у вас есть настройки формы для выполнения post? Если кажется, что страница обновляется, возможно, тег form настроен неправильно. Также кнопка для отправки должна быть тегом input типа submit. HTML-код должен выглядеть примерно так:

<form action="/contact" method="post">
   <!-- your form elements go here -->

   <input type="submit" value="Sign in">
</form>
person Batkins    schedule 05.02.2013
comment
вы правы, глупая ошибка с моей стороны не установить действие и не опубликовать... Теперь ему не нравится:subject => params[:name] + связался с вами через веб-сайт, он выдает ошибку нулевого класса относительно + - person Richlewis; 05.02.2013
comment
Хм. Похоже, что params[:name] может быть nil. Убедитесь, что элемент формы с name установлен на name. Вот так: <input name="name" type="text">. Кроме того, если вы хотите предотвратить ошибку указателя nil, вы можете сделать что-то вроде этого :subject => "#{params[:name] || 'Someone'} has contacted you via the Website". Это сделает его значение по умолчанию Someone, если параметр name не передан. - person Batkins; 05.02.2013
comment
это именно то, что у меня было type = text, id = name, там все перепуталось, еще раз спасибо - person Richlewis; 05.02.2013
comment
Все формы HTTP автоматически считаются method='POST', если атрибут не указан. Формы также будут отправлять сообщения на тот же URL-адрес, если он не указан, что также значительно упрощает определение маршрутов. - person iain; 06.02.2013