2012-05-27 26 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