在edit.html.erb表单中编辑Rails中的基本用户模型时,如果用户的电子邮件地址已更改,我想应用特殊逻辑。我在尝试在控制器中设置IF语句时遇到了麻烦。
以下是我在用户控制器中的内容:
class UsersController < ApplicationController
.
.
.
def edit
@user = User.find(params[:id])
end
def update
current_email = @user.email
new_email = params[:user][:email]
if new_email = current_email
#update user as usual
else
#send email to new email address to confirm
end
end
.
.
end
调试时,我发现Update操作的第1行和第2行工作正常。具体来说,当我在编辑用户表单上更改电子邮件时,变量设置正确。但IF语句(Update操作中的第3行)似乎总是返回true。
以下是我正在使用的edit.html.erb表单:
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<%= f.label :first_name %><br />
<%= f.text_field :first_name %><br />
<%= f.label :last_name %><br />
<%= f.text_field :last_name %><br />
<%= f.label :email %><br />
<%= f.text_field :email %><br />
<%= f.label :password %><br />
<%= f.password_field :password %><br />
<%= f.label :password_confirmation, "Confirmation" %><br />
<%= f.password_field :password_confirmation %><br />
<%= f.submit "Update" %>
对此的任何帮助将不胜感激。
答案 0 :(得分:2)
评估运算符是== not =。它应该是:
if new_email == current_email
#update user as usual
else
答案 1 :(得分:0)
if new_email = current_email
应该是
if new_email == current_email