2016-08-15 43 views
0

当用户尝试删除我的网站上的帐户时,我希望他们填写表单以说明他们离开的原因。当他们点击提交按钮时,我基本上需要执行两个操作。表单的内容需要提交,用户帐户需要删除。我怎样才能做到这一点?我正在使用Devise。Rails如何发送POST然后用一个用户按钮删除点击

的色器件破坏动作看起来是这样的:

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 

据我所知送我需要它的形式params是一个POST请求,但删除用户帐户我需要它是一个DELETE请求。我如何设计这个表单以便提交(邮件发送),然后帐户被删除?

+0

以上所有仅仅是ruby代码...您可以创建一个控制器动作,执行代码行为代码...然后立即执行删除动作代码:) –

+0

@TarynEast yes但是当我创建如果需要使用,请使用以下哪种方法:提交参数,以及:删除以删除帐户 – user4584963

+0

我会选择“删除”作为方法。 ''如果我需要使用:post提交参数,并且:delete删除账户''你不需要这两种方法......只需将其全部发布到“delete”方法中,然后修改delete方法做两者的代码。 –

回答

0

首先,没有重定向到删除操作

所以,这是应该如何去: -

  1. 创建类似的新的行动创造添加一个新的记录
  2. 检查是否创建新记录,然后删除

`

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

您也可以试试devise helpers的sign_out_and_redirect

+0

设计销毁行为中的所有额外代码(sign_out_all_scopes等)如何?这不需要吗? – user4584963

+0

是的..你会需要它,如果你想通过直接呼叫删除用户..如使用link_to删除操作......但没有重定向删除操作 – Milind

+0

我很困惑你的解释。只有当我想使用link_to helper删除时,我需要确保包含所有设计代码? – user4584963