我想将以下链接更改为将表单的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
我意识到我需要在邮件程序中创建一个正文 - 但我不知道如何创建一个表单来执行此操作并将其全部传递。我确实考虑过创建一个模型来做到这一点,但是我认为从一个表单中发送一封电子邮件的整个模型会轻微过度杀戮?
答案 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