2011-08-10 10 views
3

可能性の重複:
How do I easily parse a URL with parameters in a Rails test?レール、URL文字列からparamsを取得するには?

私の英語のため申し訳ありません...

私はarchives.rbモデルにHTMLコンテンツからすべてのsrc属性を取得するためのメソッドを持っています私はsrcのようになっています:

http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142

私は具体的には、そのURLからのparamsを取得する必要があります:ID、X、Y

おかげで、 よろしく。

答えて

-17

それは、例えば

irb(main):011:0> s = "http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142" 
=> "http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142" 
irb(main):012:0> s[/.*\/(\d+).+x=(\d+).*y=(\d+)/,1] 
=> "28" 
irb(main):013:0> s[/.*\/(\d+).+x=(\d+).*y=(\d+)/,2] 
=> "142" 
irb(main):014:0> s[/.*\/(\d+).+x=(\d+).*y=(\d+)/,3] 
=> "142" 
irb(main):015:0> 
+2

これは非常に多くの方法が失敗する可能性があります。パワフルなパーザが既に存在する場合には、不安定なRegexは使用しないでください。 –

+0

このような貧弱な答えは、dup answer linkで説明したようにCGI解析を使用します。 – DGM

+0

私は答えが**貧しい**とDGMの方が正解です**両方のアプローチはURLの構造に依存しているので、私の3つのパラメータとDGMを取得してIDを取得します。 URLが異なる場合、両方とも失敗します。 私はCGIを使ってxとyの値を取得するのがかなり見えることに同意します。 – Bohdan

2

あなたのコントローラーでは、 'params [:x]'と 'params [:y]'を実行できます。たとえば、次のように

x = params[:x] 
y = params[:y] 
+1

おかげで、しかし...私はそれを行うことはできませんまず、私のコードはモデルにあり、2番目のURLはhtmlテキストコードから抽出された文字列です。 –

10

正しいアプローチいくつかの正規表現を使用して実行される可能性があります。

url = "http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142" 
uri = URI::parse(url) 
id = uri.path.split('/')[4] 
params = CGI::parse(uri.query) 
+0

あなたはidを忘れて – Bohdan

+0

というIDを取得しました。 :) – DGM

+0

編集が間違っていて、それを修正するための推奨された編集が間違って拒否されました。私はそれを修正しました。 – DGM

関連する問題