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

Railsアプリを作っていて、
なんかのタイミングでAjaxを使ってコンテンツを読み込みたいということは多い。

例えば無限スクロール。
jQueryの $.get$.ajax 使う時にちょっとハマった。

  
スクリーンの最下部に達したら自動で次ページを読み込むスクリプト。

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

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた