2012-02-26 156 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