2012-02-26 43 views
1

私はRuby on Railを初めて使用しています。私はフォームからPOSTを使用してISDCode、AreaCode、Telephoneの各パラメータを渡しました。特定の文字列から情報を抽出する

変数ISDCodeに渡されるcountryName(ISDCode)の形式の情報を持つ文字列があります。たとえば、「米国(+1)」などです。

ここでは、データベースにISDCodeの値のみを保存します。

文字列からISDコードを抽出する理想的な方法は何ですか?

ユーザーがフォームをPOSTする前にJavascriptでISDコードを抽出する必要がありますか、コールバックを使用してモデルで抽出する必要がありますか?

情報を抽出する唯一の方法は正規表現ですか?

+0

1つのテキストフィールドで自動補完機能を使いやすくするために、CountryName(ISDCode)形式を使用しました。 – nightf0x

答えて

1

にマッチする正規表現を使用して文字列が自動終了してからなので、ISDcodesは、データベース内の既存する必要があります。したがって、最良の解決策は、isdcode_idのような追加のパラメータ(非表示の入力を含む)を含んでいる可能性があります。その場合、単にモデルでisdcode_idを使用します。この方法で、文字列を解析する手間を省くことができます。

これが実現できない場合は、正規表現が情報を抽出する最良の方法です。モデル内のセッターをオーバーライドして、それを行うことができます。

1

はISDcode

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

あなただけではただISDコードを得ることに興味を持っている場合、これは動作するはずです:

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

はNB:あなたはあなたのビューヘルパーでこれを持っているだけで永続

1
前に文字列にヘルパーを呼び出すことができます

はすでに答えが、私はISDコードを取得する代替手段を提供したいと思います:

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

この正規表現のマッチ: 0001を1 +01 など

0

私は、クライアント側で情報を抽出し、モデルで検証するのが好きです。この方法で、あなたが望むものを手に入れ、それが正しいことを確かめることができます。

+0

私は一般的に、クライアント側で検証を避けるのは、ブラウザ上でjavascriptをオフにすることでクライアントが簡単に不正行為をすることができますが、とにかく感謝しています。 – nightf0x

+0

「モデルで検証する」とは、サーバー側を意味します。 – Jeweller

関連する問題