5

RubyのURLからクエリ文字列を削除するには、次のようにします。

url.split('?')[0]

ここで、 urlはクエリ文字列を含む完全なURLです(例url = http://www.domain.extension/folder?schnoo=schnok&foo=bar)。

これを行うためのより高速な方法はありますか?つまり、splitを使用せずに、Railsを使用しますか?

編集:目標はからにリダイレクトするhttp://www.domain.extension/folder?schnoo=schnok&foo=barことhttp://www.domain.extension/folderです。

編集:私は使用しました:

url = 'http://www.domain.extension/folder?schnoo=schnok&foo=bar'
parsed_url = URI.parse(url)
new_url = parsed_url.scheme+"://"+parsed_url.host+parsed_url.path
4

4 に答える 4

16

URLを再構築する代わりに、解析して設定するfragmentと、読みやすくなり、失敗しにくくなります。querynil

parsed = URI::parse("http://www.domain.extension/folder?schnoo=schnok&foo=bar#frag")
parsed.fragment = parsed.query = nil
parsed.to_s

# => "http://www.domain.extension/folder"
于 2015-06-24T07:19:45.003 に答える
7
 url = 'http://www.domain.extension/folder?schnoo=schnok&foo=bar'
 u = URI.parse(url)
 p = CGI.parse(u.query)
 # p is now {"schnoo"=>["schnok"], "foo"=>["bar"]}

:レール上のrubyで渡されたURLからクエリ文字列を取得する方法を見てください

于 2012-05-02T09:17:55.433 に答える
6

正規表現を使用してパフォーマンスを得ることができます

'http://www.domain.extension/folder?schnoo=schnok&foo=bar'[/[^\?]+/]

#=> "http://www.domain.extension/folder"
于 2013-08-14T16:20:08.927 に答える
0

おそらく、URLを分割する必要はありません。このリンクにアクセスすると、2つのパラメーターがバックエンドに渡されます。

http://www.domain.extension/folder?schnoo=schnok&foo=bar params[:schnoo]=schnok params[:foo]=bar

ログを監視してみてください。そうすれば、それらが表示され、コントローラーで直接使用できます。

于 2012-05-02T09:11:31.337 に答える