Rails3+jQueryでデータ削除ができない

Rails3でjQueryを使った場合に、下記のリンクをクリックして、データを削除しようとしたら
なぜかPOSTではなく、GETでデータを取得してしまう問題がありました。

<a rel="nofollow" data-method="delete" data-confirm="Are you sure?" href="/foos/2">Destroy</a>


ダイアログも表示されないことからJavascriptが動いてないんでないかと思ってたら
同じような問題がありました。

rails3 + jqueryで DELETEやらPOSTのリンクががが。 | おれせか

上のサイトをみると、どうやら

$ rails g jquery:install

だけでは足りなくて、追加の設定が必要らしいというところまでわかりました。

以下は修正の手順です。

手順

1. githubにあるrails.jsをダウンロードして、`public/javascript`に配置
railsコマンドでjqueryをインストールすると、デフォルトのrails.js(prototype.js由来)は消されてしまうのですが、
jquery用のrails.jsを追加する必要があります。

$ cd public/javascript
$ wget https://github.com/rails/jquery-ujs/raw/master/src/rails.js

2. `config/application.rb`に記述を追加
デフォルトでは空なので、jqueryrailsを追加します。

config.action_view.javascript_expansions[:defaults] = %w(jquery rails)

これで動くはずです。

確認

$ rails g scaffold foo name:string
      invoke  active_record
      create    db/migrate/20110520140721_create_foos.rb
      create    app/models/foo.rb
      invoke    rspec
      create      spec/models/foo_spec.rb
       route  resources :foos
      invoke  scaffold_controller
      create    app/controllers/foos_controller.rb
      invoke    haml
      create      app/views/foos
      create      app/views/foos/index.html.haml
      create      app/views/foos/edit.html.haml
      create      app/views/foos/show.html.haml
      create      app/views/foos/new.html.haml
      create      app/views/foos/_form.html.haml
      invoke    rspec
      create      spec/controllers/foos_controller_spec.rb
      create      spec/views/foos/edit.html.haml_spec.rb
      create      spec/views/foos/index.html.haml_spec.rb
      create      spec/views/foos/new.html.haml_spec.rb
      create      spec/views/foos/show.html.haml_spec.rb
      invoke      helper
      create        spec/helpers/foos_helper_spec.rb
      create      spec/routing/foos_routing_spec.rb
      invoke      rspec
      create        spec/requests/foos_spec.rb
      invoke    helper
      create      app/helpers/foos_helper.rb
      invoke      rspec
      invoke  stylesheets
   identical    public/stylesheets/scaffold.css

$ rake db:migrate
==  CreateFoos: migrating =====================================================
-- create_table(:foos)
   -> 0.0017s
==  CreateFoos: migrated (0.0027s) ============================================
$ rails s

f:id:zepbag:20110520233047p:image
f:id:zepbag:20110520233046p:image