2

次のパスがあります。

http://192.168.56.10:4567/browse/foo/bar?x=100&y=200

文字列で「http://192.168.56.10:4567/browse/」のに来るものはすべて絶対に必要です。

スプラットを使用しても機能しません (「foo/bar」のみをキャッチします):

get '/browse/*' do

正規表現も同様です (「foo/bar」のみをキャッチします):

get %r{/browse/(.*)} do

x および y パラメータはすべて params ハッシュでアクセスできますが、必要なものに対して .map を実行するのは不合理でルビーらしくないようです (また、これは単なる例です.. 私のパラメータは実際には非常に動的で多数あります)。 . これを行うより良い方法はありますか?

詳細情報: 私のパスは API と通信しているため、このように見えます。ルートを使用して、作成する API 呼び出しを決定します。このように見える文字列が必要です。

4

2 に答える 2

5

パス パラメータのハッシュ タグを無視しても構わない場合は、これでうまくいくはずです (ところで、ブラウザは URL のハッシュの後に何も無視します)。

更新された回答

get "/browse/*" do
  p "#{request.path}?#{request.query_string}".split("browse/")[1]
end

またはさらに単純な

request.fullpath.split("browse/")[1]
于 2013-01-23T13:57:50.983 に答える
1
get "/browse/*" do
  a = "#{params[:splat]}?#{request.env['rack.request.query_string']}"
  "Got #{a}"
end
于 2013-01-23T13:06:26.967 に答える