在Rails 3中将表单嵌入电子邮件中

时间:2015-09-30 05:14:34

标签: ruby-on-rails ruby-on-rails-3

我想通过电子邮件收集反馈。为此,我想在电子邮件中嵌入一个反馈表,用户可以填写并提交。提交后,表单会将数据发布到我可以处理数据的应用程序中。

请建议如何做到这一点,或者我是否可以通过其他任何方式实现这一目标。

注意:我还考虑过在我的应用中嵌入谷歌表单,但我无法弄清楚如何做到这一点。 此外,我的申请是私人的,因此,它不能公开。

2 个答案:

答案 0 :(得分:2)

你可以这样做 - 在你的电子邮件正文中写一个html表单,配置为发布到你的rails应用程序的路线。根据您的受众,这可能不是一个好主意。 Many email clients don't display inline forms correctly,并且很难进行客户端验证。如果您无法公开Rails表单,那么链接到Google表单会更好。

答案 1 :(得分:0)

大多数HTML电子邮件客户端都不会向表单显示输入元素(想想你会收到多少垃圾邮件)。

有一个great resource here

  

缺点是电子邮件客户端认为电子邮件表单是一个   安全风险。虽然有些电子邮件客户只是警告你有潜力   危险,其他人彻底禁用表格。所以如果你的客户想要   发出表格,他们应该知道他们的大部分收件人都会   永远无法使用它。对于那些能够做到的人,他们会三思而后行   关于在他们看到来自他们的电子邮件客户端的警告时提交数据。

-

根据我的经验,电子邮件只能用作轻松沟通的形式;文字越少越好。图片效果很好。

  

我想通过电子邮件收集反馈

更好的解决方案是在电子邮件正文中发送一系列链接(作为特定问题的答案)。这样您就可以将用户发送到“反馈”页面,从中您可以从中收集数据。

更好 - 您可以对链接进行编码以传递其name& email然后您可以在页面上填充...

#email
<a href="yoururl.com/feedback/new?name=your+name&email=email@email.com">Fill out the form</a>

#app/views/feedback/new.html.erb
<%= form_for @feedback do |f| %>
   <%= f.text_field :name, placeholder: "Name", curent_user.name || params[:name] %>
   <%= f.email_field :email, placeholder: "Email", current_user.email || params[:email] %>
<% end %>

您可以使用以下控制器和路线进行备份:

#config/routes.rb
resources :feedback

#app/controllers/feedback_controller.rb
class FeedbackController < ApplicationController
   def new
      @feedback = Feedback.new
   end
   def create
      @feedback = Feedback.new feedback_params
      @feedback.save
   end

   private

   def feedback_params
      params.require(:feedback).permit(:x, :y, :z)
   end
end

这样您就可以将人们发送到new反馈表单页。

-

如果您希望对电子邮件有更“互动”的感觉,您可以制作一系列链接(在电子邮件正文中),这也会将用户发送到新的feedback视图:

#email
<h3>Question 3</h3>
<a href="yoururl.com/feedback/new?name=richard&email=peck@email.com&3=a">a</a>
<a href="yoururl.com/feedback/new?name=richard&email=peck@email.com&3=b">b</a>
<a href="yoururl.com/feedback/new?name=richard&email=peck@email.com&3=c">c</a>
<a href="yoururl.com/feedback/new?name=richard&email=peck@email.com&3=d">d</a>

这会产生互动的幻觉,虽然不是交互本身。