0

routes.rb に次の定義があります。

  match "/block/:name/:action" => proc { |env|
    #heavy magic happens here
  }

セルのレンダリングを処理するために使用します。私の問題は、次のリンクです。

/block/reporting%2Fother%2Fexample/new?exampleable_id=23736&exampleable_type=Abc%3A%3ASomeType

開発モードでは問題なく動作しますが、本番環境では「404 Not Found」が表示されます。本番用 URL と開発用 URL の唯一の違いは、開発用 URL は http を使用し、本番用 URL は https を使用することです。procブロックに欠陥のあるコードを書いた場合は理解できますが、開発では完全に機能するのに、なぜそれが本番環境で一致しないのか理解できません。

これをデバッグする方法に関するヒントは大歓迎です。頭の毛があまり残っていません。

4

1 に答える 1

2

最終的にローカル マシンの本番環境でプロジェクトを起動した場合でも、このエラーが発生しました。問題は、本番環境で Thin を使用していないことです。旅客を利用します。最終的に乗客がローカルで作業できるようになった後、エラーを再現することができました。

乗客の場合、前述のルートの :name は「reporting%2Fother%2Fexample」と解釈されず、おそらく /block/ reporting /other/example/new と解釈され、残りはもちろん一致しませんでした。

交換してエラーを修正しました

match "/block/:name/:action"

match "/block/*name/:action"

私自身の質問に対するこの回答が、将来誰かに役立つことを願っています。

于 2013-04-18T15:53:44.523 に答える