Rails 2.3.5 を実行しているアプリがあり、そのほとんどに JSON API があります。
請負業者が来て、アプリでいくつかの作業を行い、いくつかの場所で RJS を使用しました。メイン Web サイトに RJS を使用しているコントローラー アクションの一部も、API の一部である必要があります。
問題は、JSON API 要求が RJS 応答をトリガーすることです。これは私が望んでいるものではありません。RJS 応答がブラウザーから発生するようにしたいのですが、それが API 要求の場合 ("application/json" Accept および Content-Type ヘッダーを使用することで区別されます)、API 応答を送信するだけにしたいと考えています。
私が知る限り、Rails は javascript を含むすべての MIME タイプに対して RJS レスポンスをトリガーします。
テキスト/javascript アプリケーション/json
等
RJS に text/javascript のみに応答させる方法はありますか? または、この問題を解決するためのより良い方法はありますか?
より明確にするために、次のようなコードがあります。
def show
@dashboard = @user.dashboard
respond_to do |wants|
wants.html
wants.json { render :json => @dashboard }
end
end
問題は、このコントローラーのビュー フォルダーに show.rjs テンプレートもあるということです。誰かが API にアクセスすると、上記のように json の結果をレンダリングする必要がありますが、代わりに show.rjs テンプレートをレンダリングします。
API クライアントが必要な json の結果を確実に取得できるようにするにはどうすればよいですか?