Rails / AjaxでHTMLが返ってきてしまう時の対処法

Shunsuke Sawada

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 ファイルをレンダリングしてくれるようになりました。
以上です。

Shunsuke Sawada

おすすめの記事

acts-as-taggable-on タグを表示させる順番を決めたい
Railsを4.2にバージョンアップしたら、Vagrantのローカル開発環境にアクセスできなくなった問題
Railsのバリデーションエラー後にレイアウトが崩れるとき