Сравните текущий атрибут Model с записью поля формы edit.html.erb в Rails 3 - PullRequest
1 голос
/ 26 февраля 2012

При редактировании базовой модели пользователя в Rails из формы edit.html.erb я хотел бы применить специальную логику, если адрес электронной почты пользователя изменяется. У меня проблемы с попыткой настроить оператор 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

При отладке я обнаружил, что строки 1 и 2 действия Обновить работают правильно. В частности, когда я изменяю электронную почту в форме редактирования пользователя, переменные устанавливаются правильно. Но оператор IF (строка 3 в действии Update) всегда возвращает 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 ]

2 голосов
/ 26 февраля 2012

Оператор оценки == не =. Следует читать:

if new_email == current_email
    #update user as usual
else
0 голосов
/ 26 февраля 2012
if new_email = current_email

должно быть

if new_email == current_email
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...