0

Rails でプロジェクトからユーザーを削除しようとすると、奇妙な動作が発生します。

簡単に言うと、管理者ユーザーが別のユーザーを削除できるようにするリンクがビューに表示されます。

<%= link_to 'Delete User', user, :method => :delete, :confirm => "Are you sure?" %>

そして、これが私のユーザーコントローラーのコードです:

# DELETE /users/1
# DELETE /users/1.json
def destroy
  @user = User.find(params[:id])
  @user.destroy

  respond_to do |format|
    format.html { redirect_to users_url }
     format.json { head :no_content }
  end
end

ただし、ユーザーが削除されている間、「よろしいですか?」というポップアップが表示されます。ボックスが 2 回表示され、次のエラーが表示されます。

ActiveRecord::RecordNotFound in UsersController#destroy
Couldn't find User with id=xxx

「xxx」は、削除したばかりのユーザー ID です。

ちょっと調べてみると、これはプロジェクトに JavaScript をロードする方法に関係していて、おそらく jQuery と競合していると示唆する人もいます (私はjquery-railsgem を使用しています)。ただし、私のapplication.html.erbファイルは問題ないようです:

<%= stylesheet_link_tag    "application","http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/smoothness/jquery-ui.css" %>

<%= stylesheet_link_tag    "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>

私のapplication.jsファイルもそうです:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .

そのため、なぜこれが起こっているのかわかりません。エラーに遭遇したのはこれが初めてです。

誰かが私を正しい方向に向けたいですか?

ありがとう!

4

1 に答える 1

1

ライブラリの 1 つに jQuery が 2 回読み込まれている可能性があります。以前に私に起こったのは、当時の ActiveAdmin が別の jQuery 依存関係を持っていたため、jQuery が 2 回読み込まれ、すべての呼び出しが 2 倍になったと思います。

ユーザーエラーは、ユーザーが既に削除されているため、2回目には見つからないためです。

于 2013-02-05T19:28:26.497 に答える