2012-02-26 11 views
1

edit.html.erbフォームからRailsで基本ユーザモデルを編集する場合、ユーザのメールアドレスが変更された場合に特別なロジックを適用したいと思います。コントローラにIF文を設定しようとするときに問題があります。ここで現在のModel属性とRails 3のedit.html.erbフォームフィールドエントリを比較します

は、私は、ユーザーのコントローラに持っているものです。

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文(Updateアクションの3行目)は常にtrueを返すようです。これですべてのヘルプは大歓迎されます

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

:ここ

は、私が使用していますedit.html.erbフォームです。

答えて

2

評価演算子は== not =です。読み込みする必要があります。

if new_email == current_email 
    #update user as usual 
else 
0
if new_email = current_email 

if new_email == current_email 
+0

重複答えなければなりません – phoet

関連する問題