2016-08-15 8 views
0

ユーザーが自分のサイトで自分のアカウントを削除しようとすると、その理由を説明するフォームを記入します。彼らが送信ボタンをクリックすると、私は基本的に2つのアクションが必要です。フォームの内容を提出する必要があり、ユーザーアカウントを削除する必要があります。これをどうすればいいのですか?私はDeviseを使用しています。1つのユーザーボタンでPOSTを送信してからDELETEする方法を教えてください

工夫破壊するアクションは、次のようになります。

def destroy 
    resource.destroy 
    Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name) 
    set_flash_message! :notice, :destroyed 
    yield resource if block_given? 
    respond_with_navigational(resource){ redirect_to after_sign_out_path_for(resource_name) } 
    end 
フォームを送信するために私の行動は、(フォームが実際に電子メールを送信します)私が送信するために理解して何から

def create 
    @delete_form = DeleteForm.new(params[:delete_form]) 
    @delete_form.request = request 
    @delete_form.deliver 
    end 

次のようになります

私はPOSTリクエストである必要がありますが、ユーザーアカウントを削除するにはDELETEリクエストである必要があります。フォームを送信して(メールを送信して)アカウントを削除するにはどうすればいいですか?

+0

上記のすべては単にルビーコードです...クレートアクションコードを実行するコントローラーアクションを1つ作成するだけですぐに削除アクションコードを実行できます:) –

+0

@TarynEastはい、どのような方法を使用する必要がある場合:私は使用する必要があります:ポストを送信するために投稿、および:アカウントを削除するために削除 – user4584963

+0

私は方法として "削除"を選択したいと思います。 ''を使用する必要がある場合:パラメータを送信するにはpost、アカウントを削除するにはdelete ''二つのメソッドは必要ありません...すべてを "delete"メソッドに投稿し、deleteメソッドを変更します両方のコードを持っている。 –

答えて

0

まず、だから、ACTION

を削除するには、何のリダイレクトがない、これはそれが行くべきかである: -

  1. 新記録
  2. を追加するために作成するために、同様の新規アクションを作成新しいレコードが作成されていることを確認してから、削除します。

if @user_post.save 
User.find(current_user).delete 
    redirect_to :sign_in,notice: "Thank you for your reply." 
end 

また、sign_out_and_redirectをdevise helpersから試してみることもできます。

+0

devise destroyアクション(sign_out_all_scopesなど)のすべての余分なコードはどうですか?それは必要ではないですか? – user4584963

+0

はい。直接呼び出しでユーザーを削除したい場合は必要です。リンクアクションを削除してリンクを使用していますが、削除アクションのリダイレクトはありません – Milind

+0

あなたの説明でわかりません。 link_toヘルパーを使用して削除したい場合にのみ、すべてのdeviseコードを必ず含める必要がありますか? – user4584963

関連する問題