0

わかりましたので、ユーザーの削除ボタンがあります

  <button id="delete" data="<%= user_path(@user) %>">Delete User</button>

jquery uiを使用しています

   $("#delete").button();

クリックしてユーザーを削除したいので、

   $("#delete").click(function(){
      if(confirm("Are you sure?")){
          var url = $(this).attr('data');
          $.post(url, {_method:'delete'}, null, "script");
          document.location = '<%= users_path %>';
          return false;
      } else {
          return false;
      }
   });

すべてうまく機能しますが、ページが更新されると、破棄アクションからフラッシュが得られません

def destroy
  User.find(params[:id]).destroy
  flash[:success] = "User deleted."
  redirect_to users_path
end

これを修正する方法、または私が行ったことを再構築する方法に関する提案。スタイリング目的で link_to または button_to を使用することはできません

4

1 に答える 1

3

フラッシュ データは、次の要求に対してのみ存在します。AJAXポストバックによって「食べられ」ています。

post経由する$.postと、実際には 2 つの要求が行われます。deleteリクエストはリダイレクトに従い、 にリクエストgetを発行しusers_pathます。その要求は、フラッシュ データを参照します。次に を に設定するdocument.locationusers_path、レンダリングするフラッシュ データがなくなります。

手巻きの AJAX でこれを扱うべきではありません。通常のリンクのようにリンクをクリックできるようにし、Rails の UJS がポストバック/確認ダイアログを処理できるようにします。これは、何か非常に悪いことをしていない限り、リンクのスタイル設定に影響を与えることはありません

于 2012-04-10T17:48:16.623 に答える