0

我有一个在Heroku上运行的 RoR 应用程序,我使用Cloudmailin插件将电子邮件发送到应用程序本身。

这些电子邮件的内容将用于在数据库中创建新内容。这是一个应用程序,用户可以在其中对其他用户下注。结果是通过电子邮件发送到应用程序,因此可以触发结算过程。

我有一个看起来像这样的传入邮件控制器:

class IncomingMailsController < ApplicationController
  skip_before_filter :verify_authenticity_token

  def create
    Spotprice.create(:deliverydate => Date.tomorrow, :spotarea_id => Spotarea.find_by_areaname("Phelix").id, :product_id => Product.find_by_productname("Base").id, :value_in_currency => "87")
  end

end

上面的工作很好,但我需要它来阅读电子邮件的内容,而不是上面代码中的静态内容(Phelix、Base、Date.tomorrow 和 87)。

那么当电子邮件正文如下所示时,我该怎么做:

23112012 Phelix Base 87.00
23112012 System Peak 64.55

邮件有多行,其中每一行是数据库中的一个新 Spotprice。这意味着我还必须以某种方式遍历邮件中的每一行并分别创建每个 Spotprice。

帮助将非常受欢迎:)

4

1 回答 1

1

如果您正在寻找的只是如何解析每一行以空格分隔的文本,那么这应该可以 -

email_text_array = []

email_text.split("\n").each do |email_line|
    email_text_array << email_line.split(" ")
end

和 email_text_array 看起来像

email_text_array = [
    ["23112012", "Phelix", "Base", "87.00"],
    ["23112012", "System", "Peak", "64.55"]
]
于 2012-11-22T12:56:16.267 回答