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`に記述を追加
デフォルトでは空なので、jqueryとrailsを追加します。
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