2012-02-26 157 views
1

我是新来的红宝石在轨道上。我使用POST从表单传递参数ISDCode,AreaCode和电话号码。从特定字符串提取信息

我有一个字符串,其格式countryName(ISDCode)的信息在变量ISDCode中传递。例如“美利坚合众国(+1)”。

现在我只想在数据库中保存ISDCode的值。

什么是从字符串中提取ISD代码的理想方法?

我应该在Javascript中提取JavaScript中的ISD代码之前用户发布表单或应该使用回调在模型中提取它?

也是正则表达式提取信息的唯一方法?

+0

我已经使用CountryName(ISDCode)格式,以便在一个文本字段中使用auto complete。 – nightf0x 2012-02-26 11:35:05

回答

1

由于字符串是自动完成的ISDcodes应该在你的数据库中已有的。所以最好的解决方案可能包括一个额外的参数(带有隐藏的输入),比如isdcode_id,那么你只需在你的模型中使用isdcode_id。这样可以避免解析字符串的麻烦。

如果这不可行,正则表达式可能是提取信息的最佳方式。你可以重写模型中的setter来完成它。

1

使用正则表达式匹配ISDcode

"United States of America(+1)" =~ /(\+[\d]+)/ 
puts $1 
1

如果您有兴趣获得单独刚刚ISD代码,这应该工作:

"United States of America(+1)".gsub!(/[^\+\d]/, "") 

注意:您可以在视图助手有这个,只是呼吁串助手持久之前

1

已经回答了,但我想提供一个替代得到ISD代码:

isd = "United States(+1)" 
    puts isd[/[+]*[\d]{1,4}/] # +1 

这正则表达式匹配: +1 +01 等

0

我更喜欢用js来提取客户端的信息并在模型中进行验证。通过这种方式,你可以得到你想要的,并确保它是正确的。

+0

我通常会在客户端避免验证,因为客户端可以通过在浏览器中关闭javascript来轻松地作弊,但无论如何谢谢 – nightf0x 2012-02-26 12:50:40

+0

通过说“在模型中进行验证”,我的意思是在服务器端! – Jeweller 2012-02-26 13:57:44