3

Rails 3.2.8 アプリで JQuery プラグインを使用しようとしています。

関連するコードは次のとおりです...

/app/views/layouts/application.html.hamlファイル内:

!!!
%html
  %head
    = javascript_include_tag :defaults
    = javascript_include_tag '/assets/nospam.js'

/public/javascripts/application.jsファイル内:

//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require nospam

/app/assets/javascripts/nospam.jsファイル内:

$('#my-email').html(function(){
  var e = "me";
  var a = "@";
  var d = "mysite";
  var c = ".com";
  var h = 'mailto:' + e + a + d + c;
  $(this).parent('a').attr('href', h);
  return e + a + d + c;
});

/app/views/layouts/index.html.hamlファイル内:

%p
We love email, so why not send a message to
%a{:href => "#"}
  %span#my-email please enable javascript to view
and let us know what's on your mind.

Gemfile

gem 'jquery-rails'

group :assets do
  gem 'jquery-ui-rails'
end

サーバーを実行bundle installして再起動しましたが、プラグインが機能せず、Chrome の Javascript コンソールで次のエラーが表示されます。

GET http://localhost:3000/assets/nospam.js 404 (Not Found) 

ではrails console、次のようになります。

Rails.application.config.assets.paths
 => ["/Users/steven/Dropbox/testivate/app/assets/javascripts", "/Users/steven/Dropbox/testivate/app/assets/stylesheets", "/Users/steven/Dropbox/testivate/vendor/assets/javascripts", "/Users/steven/.rvm/gems/ruby-1.9.3-p194/gems/jquery-rails-2.1.3/vendor/assets/javascripts"] 

アセット パイプラインを無効にすることで、これが機能するようになりましたが、パフォーマンス上の理由から、最終的に再度有効にする必要があることはわかっています。

機能させるにはどうすればよいですか?

ありがとう、

スティーブン。

4

2 に答える 2

3

次の行を取り出します。

/app/views/layouts/application.html.haml

= javascript_include_tag '/assets/nospam.js'

nospam.js ファイルは既に application.js ファイルにコンパイルされているため、個別に含める必要はありません。

また、参照する html の後に JQuery コードが実行されるようにする必要があるため、次のように $(document).ready 行を追加します。

/app/assets/javascripts/

$(document).ready(function () {
  $('#my-email').html(function(){
    var e = "me";
    (etc...)
于 2012-10-15T15:17:19.387 に答える
0

私の推測:

アセット パイプラインは、app/assetsディレクトリをディレクトリにコンパイルしますpublic

application.jsマニフェストはディレクトリにあるためpublic/javascripts、アセット パイプラインはそれを考慮していません (アセット パイプラインはパブリック ディレクトリでアセットをコンパイルしません。コンパイルされたアセットを配置する場所です)。に移動しapp/assets/javascripts/application.jsます。

レイアウトに必要なのは次のとおりです。

= javascript_include_tag :defaults

nospam.jsが にあることを確認してくださいapp/assets/javascripts/nospam.js

app/
  assets/
    javascripts/
      application.js
      nospam.js

あなたのマニフェストは私には正しく見えます。ファイルが適切な場所にないようです。

于 2012-10-15T15:42:24.750 に答える