2012-11-13 15 views
5

私のレールアプリケーションのボックスをカスタマイズする必要があります。私はthisを見つけ、私のapplication.jsにjsコードを追加しましたが、$ .railsは未定義です。ここで

は、私はapplication.jsファイルに追加したコードは次のとおりです。

$.rails.allowAction = function(link) { 
    if (!link.attr('data-confirm')) { 
    return true; 
    } 
    $.rails.showConfirmDialog(link); 
    return false; 
}; 

$.rails.confirmed = function(link) { 
    link.removeAttr('data-confirm'); 
    return link.trigger('click.rails'); 
}; 

$.rails.showConfirmDialog = function(link) { 
    var html, message; 
    message = link.attr('data-confirm'); 
    html = "<div class=\"modal\" id=\"confirmationDialog\">\n <div class=\"modal-header\">\n <a class=\"close\" data-dismiss=\"modal\">Ã</a>\n <h3>Are you sure Mr. President?</h3>\n </div>\n <div class=\"modal-body\">\n <p>" + message + "</p>\n </div>\n <div class=\"modal-footer\">\n <a data-dismiss=\"modal\" class=\"btn\">Cancel</a>\n <a data-dismiss=\"modal\" class=\"btn btn-primary confirm\">OK</a>\n </div>\n</div>"; 
    $(html).modal(); 
    return $('#confirmationDialog .confirm').on('click', function() { 
    return $.rails.confirmed(link); 
    }); 
}; 

私はエラー「キャッチされない例外TypeError:未定義のプロパティ 『allowAction』を設定することはできません」を得ました。

あなたは何が間違っているのか分かりますか? (jquery_ujs宝石がインストールされ、正常にロードされる)

は、事前に

ありがとうJercoh

答えて

3

は次のものが必要です。

gem 'jquery-rails' 

ないjquery_ujs。

+0

jquery-railsはすでにインストールされています。 – Jercoh

+1

これはapplication.jsに入れていると言われているので、おそらくアセットパイプラインを使用していないと思われますので、スクリプトの読み込み順序を確認します。このものは一番下になければなりません。 –

2

私はcustom.confirm.jsというファイルにこのコードを配置し、application.jsの一番下にあるこれら二つのライン

//= require jquery_ujs 
//= require custom.confirm.js 

を入れて、それが働いた、ありがとう!

0

私はちょうど同じ問題を抱えていましたが、Firefoxではうまくいきましたが、Chromeではうまく機能しませんでした。私はそれがChromeキャッシュのためだと思って、自分の開発サーバーに関連するすべてのブラウザキャッシュを消去して修正しました。

関連する問題