Прикрепление формы электронной почты к контроллеру - PullRequest
0 голосов
/ 19 января 2012

Я бы хотел изменить приведенную ниже ссылку на форму, которая отправляет параметры формы моему контроллеру для отправки электронного письма ... текущая ссылка работает и отправляет электронное письмо ...

<%= button_to 'Hello', contact_pages_path, :method => :put %>

В моем контроллере у меня есть:

 def contact
   Contact.contact_form.deliver
 end

Мой почтовик:

class Contact < ActionMailer::Base
  default from: "****"
  default to: "****"

  def contact_form
    mail(:subject => "Registered")
  end


end

и в моих маршрутах у меня есть:

  resources :pages do
  put :contact, :on => :collection
  end

Я понимаю, что мне нужно создатьтело в почтовой программе - но я не уверен, как создать форму, чтобы сделать это и передать все это.Я действительно думал о создании модели, чтобы сделать это, но я думал, что наличие целой модели для простой отправки электронного письма из формы будет незначительным перебором?

Ответы [ 3 ]

1 голос
/ 19 января 2012

Вы можете создавать собственные формы, используя form_tag, а затем использовать text_area_tag, чтобы получить тело.Пока вы даете ему имя, оно будет отправлено в параметрах.Пример (с использованием HAML):

= form_tag contact_pages_path, :method => :put
    = text_area_tag "body"
    = submit_tag "Send"

И затем в вашем контроллере вы можете получить доступ к тексту в теле с помощью params[:body].

Смотрите здесь для получения дополнительной информациио text_area_tag (принимает много вариантов, которые вы, возможно, захотите использовать), и вы также можете прочитать больше о form_tag.

Это также не требует от вас создания дополнительной модели.

0 голосов
/ 19 января 2012

попробуйте

В файле erb

<%= form_tag(contact_pages_path, :method => "post") do %>
  From : <%= text_field_tag "from_email", "" %> <br/>
  To : <%= text_field_tag "to_email", "" %> <br/>
  Message:<br/>
  <%= = text_area_tag "message" %>
  <%= submit_tag "send" %>
<% end %>

в действии

def contact
 from_email = params[:from_email]
 to_email = params[:to_email]
 message = params[:message]

 // do operation to send the mail
end
0 голосов
/ 19 января 2012
<%= form_tag(contact_pages_path, :method => "post") do %>
  <%= text_field_tag "article", "firstname" %> 
  <%= submit_tag("Search") %>
<% end -%>

Когда вы отправите запрос, он перейдет к contact_pages_path, а в вашем контроллере попробуйте params[:article], поэтому его значением должно быть «имя».

...