2012-05-27 62 views
0

我試圖將控制器中的創建操作的一部分拼湊在一起,以掃描輸入的文本並智能地瞭解它是哪種類型的域名。掃描文本以查找域類型

我有一個名爲「domain_names」的文本框。用戶將域放入由逗號分隔的框中,例如, 「yahoo.com,google.com」

在它擊中像這樣的控制器:

@extracted_domains = (params[:domain_names]).split(",") 
@extracted_domains.each do |domain| 
    domain.strip 
    domain_scan = domain.scan(/(\w+)[.]/).flatten 
    com_scan = domain.scan(/[.](\w+)/).flatten 
    new_domain_type = DomainType.find_or_create_by_domain_type(:domain_type => com_scan) 
    new_domain = Domain.create(:domain => domain_scan, :domain_type_id => new_domain_type.id) 
end 

在它的偉大工程的控制檯。但是當我將它付諸實踐時,我發現存儲在數據庫中的東西真的很奇怪。例如,如果:域旨在具有「谷歌」的值,則其值將存儲在數據庫中時具有值「--- \ n- google \ n」。

不知道爲什麼

在此先感謝。

更新**

問題:它是將數組放入一個字符串中。

解決方案:使它成爲一個字符串。

domain_scan = domain.scan(/(\w+)[.]/).flatten.first 
com_scan = domain.scan(/[.](\w+)/).flatten.first 

回答

0

至於你的問題,我們可以看到發送的確切參數嗎?

我會看看https://github.com/pauldix/domainatrix域提取。

+0

我看過那顆寶石。它看起來像是我的問題的一個非常好的解決方案。但在使用之前,我想弄清楚爲什麼會發生這種情況。我想用非域字符串做更多類似的事情。非常感謝您的幫助。 – Dol

+0

jamie_gaskins:是的,它看起來好像你正在儲存yaml。你在序列化屬性 - 就像你這樣做是默認格式一樣。 – MatthewFord

+0

據我所知我不是。或者至少不打算。有沒有辦法解決?我如何將其轉換爲普通字符串?再次感謝您的幫助。 – Dol