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

我想将以下链接更改为一个表单,将表单的params发布到我的控制器以发送电子邮件…当前链接工作并发送电子邮件…

 :put %> 

在我的控制器中,我有:

  def contact Contact.contact_form.deliver end 

我的梅勒:

 class Contact  "Registered") end end 

在我的路线我有:

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

我意识到我需要在邮件程序中创建一个正文 – 但我不知道如何创建一个表单来执行此操作并将其全部传递。 我确实考虑过创建一个模型来做到这一点,但是我认为从一个表单中发送一封电子邮件的整个模型会轻微过度杀戮?

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

当你提交它时会转到contact_pages_path并在你的控制器中尝试params[:article] ,所以它的值应该是“名字”。

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

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

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

在这里查看有关text_area_tag更多信息(包含您可能想要使用的许多选项),您还可以在form_tag上阅读更多信息。

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

试试这个

在erb文件中

 <%= form_tag(contact_pages_path, :method => "post") do %> From : <%= text_field_tag "from_email", "" %> 
To : <%= text_field_tag "to_email", "" %>
Message:
<%= = 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