将当前Model属性与Rails 3中的edit.html.erb表单字段条目进行比较

时间:2012-02-26 04:54:53

标签: ruby-on-rails ruby-on-rails-3

在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" %>

对此的任何帮助将不胜感激。

2 个答案:

答案 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