将电子邮件表单附加到控制器

时间:2012-01-19 13:39:34

标签: ruby-on-rails actionmailer

我想将以下链接更改为将表单的params发布到我的控制器以发送电子邮件的表单...当前链接有效并发送电子邮件...

<%= 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 个答案:

答案 0 :(得分:1)

您可以使用form_tag创建自定义表单,然后使用text_area_tag接收正文。只要你给它一个名字,它就会在params中发送。示例(使用HAML):

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

然后在您的控制器中,您可以使用params[:body]访问正文中的文字。

查看here以获取有关text_area_tag的更多信息(您可能需要使用许多选项),还可以阅读form_tag上的更多信息。

这也不需要你制作额外的模型。

答案 1 :(得分:0)

<%= form_tag(contact_pages_path, :method => "post") do %>
  <%= text_field_tag "article", "firstname" %> 
  <%= submit_tag("Search") %>
<% end -%>

当您提交时,会转到contact_pages_path并在您的控制器中尝试params[:article],因此其值应为“名字”。

答案 2 :(得分:0)

试试这个

在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