Rails内でjQueryを使ってインクリメンタルサーチを実装しているのですが、
$("フォームの要素").on("keyup", function() { var input = $("フォームの要素").val(); $.ajax({ type: 'GET', url: '/users', data: { keyword: input }, datatype: 'json' }) 以下略(doneなどが続く)
Usersコントローラー
def index @users = 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を消せば解決する話なのですが、どなたか原因がわかる方がいたら教えていただけると助かります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/15 05:31
2019/03/15 05:33