1

ページに一連のリモート フォームがあり、オブジェクトが更新または作成されたときにそれぞれがファイルをアップロードできるはずです。開発中に徹底的にチェックしてテストしましたが、Remotipart を使用している限り、これは問題なく動作するようです。

しかし、今朝、Heroku のステージング サーバーに変更をプッシュしました。これらのフォームの 1 つをファイルのアップロードで送信しようとすると406 Not Acceptable、サーバーから応答が返ってきました。したがって、サーバーから期待される js テンプレートの応答が得られないため、ここで私のページは更新されません。ただし、ページをリロードすると、アップロードしようとしたファイルが問題なく表示されます。

フォームは simple_form ( with remote: true) を使用して作成され、Carrierwave with Fog を使用してファイルを S3 にアップロードしています (これも開発でテストされているため、それはないと思います)。

私が知る限り、ネットワーク インスペクタには同じ種類のデータが表示されます。リクエストのペイロードに大きな違いは見られません。

何が間違っているのかわかりません(もしあれば)。他の誰かがこれを経験したことがありますか、それとも何が悪いのか考えていますか?

アップデート

それで、私は少なくとも1つのことを考え出しました。私のコントローラーはjsフォーマットリクエストのみを処理していました。別のパスにリダイレクトすることでフォーマットされたリクエストを処理htmlし、そのページの html が ajax レスポンスとして返されるようになりました。私が理解できないように見えるのは、開発とステージングの両方でコンテンツ タイプとすべてが同じように見える場合、応答が間違った形式で送信/レンダリングされる理由です。

4

1 に答える 1

0

うーん、私はそれを解決しました。javascript は含まれていましたが、ミドルウェアは含まれていませんでした。assetsよく調べてみると、Gemfileのグループにいくつかの gem が配置されていることがわかりました。これは、開発環境には含まれますが、本番環境には含まれません。

アセット グループから remotipart を移動したところ、すべて正常に動作するようになりました。

于 2013-07-08T18:39:12.807 に答える