Sooey

2011-05-16 16:05:50 +0900

Rails 3.1ではjQueryが標準になるそうなので、すぐに要らない知識になるかもしれませんが、Rails 3.0でのjquery-railsの使い方を残しておきます(このエントリの対象はjquery-rails 1.0.2)。

まず、Gemfileに以下のような記述を追加して、bundleします。

gem 'jquery-rails''

ジェネレータを実行して、不要なファイルの削除と必要なファイルの生成を行います。

$ rails g jquery:install

このジェネレータによって、prototype.js関連の以下のファイルが削除され、

  • public/javascripts/prototype.js
  • public/javascripts/effects.js
  • public/javascripts/dragdrop.js
  • public/javascripts/controls.js

jQuery関連の以下のファイルが生成されます(jquery-rails 1.0.2の場合はjQuery 1.6がインストールされます)。

  • public/javascripts/jquery.js
  • public/javascripts/jquery.min.js
  • public/javascripts/jquery_ujs.js(各種ヘルパーで生成した要素にイベントハンドラを設定したりするもの。かつてのrails.js

jQuery UIのファイルもあわせて生成する場合はジェネレータに--uiオプションを指定します。

$ rails g jquery:install --ui

この場合、以下の2つのファイルも生成されます。

  • public/javascripts/jquery-ui.js
  • public/javascripts/jquery-ui.min.js

あとは、config/application.rbで以下のようにデフォルト(:defaults)で読み込むJavaScriptファイルを指定して、

# JavaScript files you want as :defaults (application.js is always included).
config.action_view.javascript_expansions[:defaults] = %w(jquery.min jquery_ujs)

レイアウトファイルなどからjavascript_include_tagヘルパーを使い:defaultsをインクルードさせます(当然、個別にSCRIPT要素で指定しても問題ない)。

<%= javascript_include_tag :defaults %>

jquery-railsがアップデートした場合は(バンドルされるjQueryのバージョンアップ時など)、ジェネレータを再度実行して*.jsファイルを上書きしたものをリポジトリにコミットすればOK。

なお、ヘルプによると--versionオプションを指定することで、インストールされるjQueryのバージョンを明示できるようですが、今の実装だと1.6が固定でインストールされるような気がします。