Firebug コンソールに次のエラーが表示されます。
TypeError: $.on is not a function
$.on('ajax:success', 'a[data-remote]', function(xhr, data, status) {
これは modal.js ファイルの 8 行目です。以下を参照してください。gist.github.com/1456815 のコードを使用しています。
関連する jQuery v1.7.2 縮小コードが application.js にあります。
f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object")
jQuery と modal.js コードがアセット パイプラインによって読み込まれているため、インデックス ページが読み込まれたとき、つまりリンクをクリックする前に Firebug に表示されるエラーがわかりません。
バージョン: Ruby 1.9.3、gem 1.8.24、Rails 3.2.1、Rake 0.9.2.2
私のapplication.jsソース:
//= require jquery
//= require jquery-ui
//= require jquery.dataTables
//= require TableTools
//= require ZeroClipboard
//= require datatable_highways
//= require datatable_localities
//= require datatable_neighbours
//= require_tree .
//= require modals
RailCasts #205 に従って、rail.js を /public/javascripts にダウンロードし、名前を jquery.rails.js に変更しました。率直に言って、私はこれを理解していません。アセット パイプラインに明示的に含まれていません。(フォーラムでは rails.js をどうするかについて混乱しているようです)。
jquery.js は /vendor/assets/javascripts にあります。
Modal.js.coffee:
# This file should be "required" into your `application.js` via the Asset Pipeline.
$ ->
$modal = $('#modal')
$modal_close = $modal.find('.close')
$modal_container = $('#modal-container')
# Handle modal links with the data-remote attribute
$.on 'ajax:success', 'a[data-remote]', (xhr, data, status) ->
$modal
.html(data)
.prepend($modal_close)
.css('top', $(window).scrollTop() + 40)
.show()
$modal_container.show();
$.on 'click', '#modal .close', ->
$modal_container.hide()
$modal.hide()
false
ありがとうジョン