2012-03-28 3 views
0

ここでは、ユーザーがURLを送信するSinatraアプリケーションのスニペットを示します。私はhttp://が私のアプリケーションの外にルーティングするためにURLの先頭にあることを保証する必要があります。 siteを一度記述し、その属性にアクセスするにはどうすればよいですか?正規表現を使用しない理由(3行目)状態オブジェクトを1回検索して複数の属性を取得する

p.params= "www.ruby-lang.org/en/" 
    site = URI(p.params[:url]) 
    site = "http://" + site.host + site.path + site.query 

答えて

1

URLを確保する必要がある場合は、http://で始まりますか? 「のhttp://」文字列の先頭が代わりに含まれていないため、ユーザにエラーを投げるのhttp://

+0

が続いていないある

p.params = "www.ruby-lang.org/en/" site = p.params.gsub(/^(­?!http:\/\­/)/, "http­://") # site = http://www.ruby-lang.org/en/ 

^(­?!http:\/\­/)一致する場合にのみ、私は、サイドステップしたかったです文字列からホスト、パス、およびクエリ(存在する場合)を引き出し、自動的にそれを前置することによって完全に発行されます。 – Dru

+0

このメソッドはエラーをスローしません。必要な場合にだけ 'http:// 'を単に追加します。それ以外の場合は、 'site'を元のURLに設定します。 – Kyle

関連する問題