0

次のレールルートがあります

resources :apps do
  post "name/:text/,
     :on => :member, :action => :register, :as => :register,
     :text => /[^\/]+/

end

json 形式でヒットする URL は次のとおりです。

curl -v -s -H "Content-type: application/json" -d '' -X POST http://0.0.0.0:3000/apps/1/name/hello.json

.jsonRails コントローラが上記のリクエストを受信すると、URL の末尾にある が URL エンコーディング/拡張子の一部であり、hello の一部ではないことがわかりません。パラメータは次のように表示されます。

Parameters: {"id"=>"1", "text"=>"hello.json"}

持つ代わりに"text" => "hello"

respond_to :jsonAppsControllerにもあります。

なぜこれが起こるのか分かりますか?レールを解析させる方法は.json

4

2 に答える 2

0

ルートで行うこと:format => trueで、この問題が修正されました。追加(.:format)は@H-manで機能したようです。

また、これは :format http://guides.rubyonrails.org/v3.2.13/routing.html#route-globbingのリファレンスです

ただし、設定:format => trueにより、フォーマットが常に表示されるようになり、:format => false現在起こっているフォーマットはほとんど無視されます。

問題は、正規表現が.jsonに/[^\/]+/一致する以外のすべてに一致することにあることに気付きました。/

于 2014-02-21T21:37:27.233 に答える