【发布时间】:2023-04-03 20:16:01
【问题描述】:
我正在创建一个允许用户删除其帐户/个人资料的页面。在此页面上,我有一个文本框,用户在其中键入他们的电子邮件地址以确认他们确实是当前用户并且他们想要删除他们的帐户(单击按钮后)。
我想要做的是,当用户单击文本框下方的“删除帐户”按钮时,我想获取该文本并将其与当前用户的电子邮件帐户进行比较。如果匹配,我想删除用户的帐户。如果没有,我想闪烁一条错误消息。
我已经弄清楚了一些逻辑,我将粘贴下面的内容。 现在,如果您单击“删除帐户”按钮,它将删除用户的帐户并重定向到主页,并在主页上闪烁“再见”消息。 但是,有没有与当前用户的电子邮件和文本框条目进行比较的功能。 我不确定我是否可以在 Rails 中做到这一点,或者我是否必须合并 JavaScript。我正在使用设计和康康。
请尽可能明确,我对 Rails 还很陌生。 谢谢!
邮箱和按钮在/settings/profile/delete,文件是'delete.html.haml'。
邮箱
.field
= label :email, 'Email Address'
= email_field :email, 'Enter your email address', id: 'delete-email-box'
删除帐户按钮(在邮箱下方)
#confirm-delete-btn
= link_to 'Delete Account', user_registration_path, method: :delete, data:
{ confirm: 'Are you sure you want to delete your account? This cannot be
undone!' }, class: submit btn-delete'
= link_to 'Cancel', profile_index_path, id: 'cancel-profile'
profile_controller.rb
def delete
@user = current_user
@profile = current_user.profile
end
def destroy
@user = current_user
@profile = current_user.profile
if @profile.destroy
@user.destroy
redirect_to root_url, notice: "User deleted."
else
render_error_message
end
end
【问题讨论】:
-
params将从表单中传递,并且您似乎已经实现了current_user,因此只需将params值与current_user销毁前的值进行比较。虽然现在看起来你实际上并没有提交表单,而是使用超链接,所以我会先解决这个问题 -
@engineersmnky 您介意告诉我如何修复表单并实施您的解决方案吗?如果你愿意,你可以添加作为答案,这样我就可以给你信用。谢谢!
标签: javascript ruby-on-rails ruby devise cancan