2

JQuery 1.4.4 と jQuery UJS rails.js ( https://github.com/rails/jquery-ujs )で Ruby On Rails 3.0.3 アプリを作っています。

私はモデル/ビュー/コントローラーを生成した足場を持っています-ドキュメント、私はapp/views/documents/index.html.hamlファイルにリンクを削除しています:

link_to "delete", document, :confirm => "Are you sure?", :method => :delete

これにより、次の HTML が生成されます。

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

これは非常に問題ないようです。

この「Destroy」リンクをクリックすると、ブラウザのconfirm()が表示され、[キャンセル] をクリックしても何も起こらないと思います。

しかし

削除機能が発生し、ドキュメントが削除されます。

誰かが同じ問題を抱えていますか、それとも私は何か間違っていますか?

現在、私はここまで掘り下げました:

jquery-ujs rails.jsを調べたところ、同じアンカーに2 つの.live()イベントが関連付けられています。

1) $('a[データ確認],input[データ確認]').live('クリック', function () {...}

2) $('a[データメソッド]:not([データリモート])').live('クリック', function (e){...}

最初の live() はreturn false;を実行します。私が理解しているように、これはすべての実行チェーンにブレーキをかける必要がありますが、そうではありません。2 番目のlive()は引き続き実行され、この 2 番目のlive()はフォームが生成され、アクションを破棄するために送信される場所です。

4

5 に答える 5

6

最新の rails.js (jQuery 用) にアップグレードすると、問題が修正されます。

https://github.com/rails/jquery-ujs/raw/master/src/rails.js

于 2010-12-18T23:47:32.940 に答える
2

また、rails.jsへのリンクがjqueryリンクの後にあることを確認する必要があります。<%= javascript_include_tags "rails"、 "jquery" ....%>があり、最後にrailsが必要でした。rails.jsは、jqueryによって作成された関数の多くを使用するため、railsを呼び出す前に初期化して、使用できるようにする必要があります。

于 2011-02-05T22:22:04.493 に答える
1

まだ賛成できませんが、私の問題は上記のデビッドと同じでした。rails.js が jquery リンクの後にあることを確認してください。それと、application.html.erb ファイルに CSRF タグがあることも次のようになります。

application.html.erb

  <head>
<title><%= title %></title>
<%= render 'layouts/stylesheets' %>
<script src="http://jquery.com/src/jquery-latest.js"></script>
<%= javascript_include_tag :defaults %>
<%= javascript_include_tag :all %>
<%= csrf_meta_tag %>

CSRF の詳細はこちら: http://www.themodestrubyist.com/2010/02/24/rails-3-ujs-and-csrf-meta-tags/

于 2011-07-07T03:52:42.307 に答える
0

同様のエラーがありました。

まず、button_to を使用して、削除に必要な POST アクションを取得する必要があります。

次に、jquery-ujs (https://github.com/rails/jquery-ujs/raw/master/src/rails.js) が必要とする jquery のバージョンが、使用しているバージョンであることを確認する必要があります。jquery-ujs の最新バージョンには、jquery-1.6.0 以降が必要です。古いバージョンを使用していました。

于 2011-08-08T00:42:05.927 に答える
0

Javascript を使用して削除リンクの HTML を生成する場合は、data-method="delete" に加えて data-remote="true" 属性を忘れないでください。

于 2011-09-08T22:47:56.420 に答える