我試圖將控制器中的創建操作的一部分拼湊在一起,以掃描輸入的文本並智能地瞭解它是哪種類型的域名。掃描文本以查找域類型
我有一個名爲「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
我看過那顆寶石。它看起來像是我的問題的一個非常好的解決方案。但在使用之前,我想弄清楚爲什麼會發生這種情況。我想用非域字符串做更多類似的事情。非常感謝您的幫助。 – Dol
jamie_gaskins:是的,它看起來好像你正在儲存yaml。你在序列化屬性 - 就像你這樣做是默認格式一樣。 – MatthewFord
據我所知我不是。或者至少不打算。有沒有辦法解決?我如何將其轉換爲普通字符串?再次感謝您的幫助。 – Dol