質問: User.where('name LIKE(?)', "%#{params[:keyword]}%") respond_to do |format| format.html format.json end end ``` これでイベント自体は発火していて、doneに行く前に406エラーになっていたのですが、コントローラーのHTMLが強制的に読み込まれていたからだということがわかり、format.htmlを消すとdoneに行くことがわかりました。 もちろんusers/indexのHTMLは存在しないのでHTMLを返されたらそうなるということは納得できますが、 この場合イベントが発火したタイミングでajax通信が動き、jbuilderでデータを加工してコントローラーがjsonを返す、みたいな形になると思うんですが なぜHTMLが読まれようとしてしまうのかがわかりません。 まぁformat.htmlを消せば解決する話なのですが、どなたか原因がわかる方がいたら教えていただけると助かります。
回答: datatypeではなくdataTypeだと思います。 * jQuery.ajax() | jQuery API Documentation ↑念のため検証しました。 ちなみにdataTypeはその型にそぐわないデータがサーバーから返された場合はエラーになりますが、 datatypeとした場合はdone()に入り、dataTypeとした場合にfail()に入ったので、 やはり大文字小文字も含めて正しく指定する必要があります。