Ruby on rails 扫描文本以查找域类型
我正在尝试在一个控制器中拼凑创建操作的一部分,该控制器扫描输入的文本并智能地理解它是什么类型的域名 我有一个名为“域名”的文本框。用户将域放入由逗号分隔的框中,例如“yahoo.com,google.com” 在控制器中,它按如下方式点击:Ruby on rails 扫描文本以查找域类型,ruby-on-rails,ruby,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3.2,我正在尝试在一个控制器中拼凑创建操作的一部分,该控制器扫描输入的文本并智能地理解它是什么类型的域名 我有一个名为“域名”的文本框。用户将域放入由逗号分隔的框中,例如“yahoo.com,google.com” 在控制器中,它按如下方式点击: @extracted_domains = (params[:domain_names]).split(",") @extracted_domains.each do |domain| domain.strip domain_scan = do
@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
在控制台中,它工作得很好。但当我把它付诸实践时,我会在数据库中存储一些非常奇怪的东西。例如,如果:domain的值为“google”,则当其存储在数据库中时,它将改为值“--\n-google\n”
不知道为什么
提前谢谢
更新**
问题:它将数组放入字符串中
解决方案:将其设置为字符串
domain_scan = domain.scan(/(\w+)[.]/).flatten.first
com_scan = domain.scan(/[.](\w+)/).flatten.first
至于您的问题,我们可以看到发送的确切参数吗
我想看一看域提取的情况。它似乎是由YAML输入提供的。字符串开头的三个破折号后跟一个换行符是YAML的有力指示器:是否有转换它的方法?谢谢你的帮助。我看了那块宝石。看来这是解决我问题的一个很好的办法。但在我使用它之前,我想弄清楚为什么会发生这种情况。我想用非域字符串做更多类似的事情。非常感谢你的帮助。杰米·加斯金斯:是的,看起来你确实在储存yaml。你正在序列化属性吗?当你这样做时,这是默认格式。据我所知,我不是。或者至少不打算这么做。这有什么办法吗?如何将其转换为普通字符串?再次感谢你,你帮了我很大的忙。想了想,我真的应该用那块宝石,因为链接的格式不同;我的代码只适用于“google.com”,但如果有人写www.google.com,它可能会崩溃。如果有任何关于如何从yaml转换的进一步提示,我将不胜感激——但现在让我将此标记为问题的正确答案:)取决于您的ruby/yaml解析器版本,但请尝试yaml::load(域)