Rails / AjaxでHTMLが返ってきてしまう時の対処法
Railsアプリを作っていて、
なんかのタイミングでAjaxを使ってコンテンツを読み込みたいということは多い。
例えば無限スクロール。
jQueryの $.get
や $.ajax
使う時にちょっとハマった。
スクリーンの最下部に達したら自動で次ページを読み込むスクリプト。
coffee
1
2
3
4
5
6
7
8
9
10
11
12
ready = ->
if $('.infinite-scroll').length
$(window).on 'scroll', ->
nextPageUrl = $('.pagination a.next_page').attr('href')
if nextPageUrl && $(window).scrollTop() > $(document).height() - $(window).height() - 100
$('.pagination').html('Loading...')
# $.get(nextPageUrl) これだとHTMLが返ってきてしまった
$.ajax(nextPageUrl, { type: 'GET', dataType: 'script' })
# For turbolinks
$(document).ready(ready)
$(document).on 'page:load', ready
dataType
を指定することで、Railsの .js.erb
ファイルをレンダリングしてくれるようになりました。
以上です。