2012-11-22 66 views
0

我有一個在Heroku上運行的RoR應用程序,其中我使用Cloudmailin附加組件將電子郵件發送到應用程序本身。在Rails中解析文本

這些電子郵件的內容將用於在數據庫中創建新內容。這是一個應用程序,用戶可以在其中對其他用戶進行投注。結果是通過電子郵件發送到應用程序,因此可以觸發結算流程。

我有一個接收郵件控制器,看起來像這樣:

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。

幫助將非常大大appriciated :)

回答

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"] 
] 
+0

簡單有時是複雜的,當一個是相對較新的Rails :)但是,感謝 - 它就像一個魅力,正是我一直在尋找... – Twiddr

+0

優秀,很高興幫幫我。如果您的電子郵件數據變得更加複雜,您可以在Ruby String頁面上找到更多的文本解析優點 - http://www.ruby-doc.org/core-1.9.3/String.html。此外,Rubular對於測試正則表達式(對於Ruby和一般)來說非常棒 - http://rubular.com/。 –