0
私はシナトラのアプリでこのフィルタを持っている:Rubyのバージョンに応じて配列または文字列としてSplat?
before '/:locale/*' do
# stuff...
request.path_info = params[:splat]
end
言い換えれば、私はちょうどURLのロケールの一部を取得し、それがなかったかのようにアプリのprocedeをさせたいです。 (もちろんレンダリング時にロケールを使用しています)
これはRuby 1.8.7で問題なく動作しますが、スプラットは単なる文字列ではなく1つの項目を持つ配列なので、> = 1.9でブレークします。私はそれを動作させるためにparams[:splat].first
を使用しなければならなかった。
私の質問は、この矛盾がどこから来るのかです。それは単にRuby 1.8対1.9のものですか?またはSinatraは何らかの形で関与していますか?
今後この種のものをより簡単に修正できるようにしたいと考えています。
request.path_info = [*params[:splat]].first
私はここに示します:あなたはどちらの場合に対処するために、このような何かを行うことができるように、文字列や配列のいずれかになります:[スプラット]
ニース、ありがとう!この違いが最初に現れる理由についての洞察はありますか?もちろん、Sinatra READMEには配列と文字列の両方のスプラットの例があります。 – Felixyz