[Rails3.0] scaffoldで出力される削除(Destroy)リンクが動作しないときは、jquery_ujs.js or rails.js が読み込まれているか確認する
Rails3.0にて、scaffoldで出力される削除リンク(Destroy)が動作しないときは、jquery_ujs.js or rails.js が読み込まれているか確認します。
※ 削除リンク(Destroy)は上記の部分です
prototype.jsを使用しなくて、jQueryを使う場合、削除リンクはこのままでは動作しません。
動作させるためには、jquery_ujs.js(rails.js)を読み込む必要があります。
<%= link_to 'Destroy', test_model, :confirm => 'Are you sure?', :method => :delete %>
僕の場合、jquery_ujs.js の役割を確認せずに削除していたのが原因でした。
ちなみに、jquery_ujs.js は Rails3.0 で jQuery を使う設定をするときに一緒に作成されます。
まず、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)
・引用元:Rails 3.1ではjQueryが標準になるそうなので、すぐに要らない知識になるかもしれませんが、Rails 3.0でのjquery-ra… - Sooey
引用元記事のタイトルにあるように、Rails 3.1ではjQueryが標準になるので、ハマる人はあまりいないと思いますが参考になれば幸いです。
【参考】