2012-04-12 39 views
1

我想知道爲什麼用戶在編輯他們的個人資料後不斷退出?我的更新功能是rails,用戶在編輯配置文件後註銷?

def update 
    flash[:notice] = "what is params[id]", params[:id] 
    @user = User.find(params[:id]) 
    if @user.update_attributes(params[:user]) 
     #flash[:success] = "Profile updated" 
     sign_in @user 
     redirect_to @user 
    else 
     render 'edit' 
    end 
    end 

params id是越來越正確地過去了,一切都可以正確地更新我的分貝。我在users/edit.html.erb形式

<% provide(:title, "Edit user") %> 
<h1>Update your profile</h1> 

<div class="row"> 
    <div class="span6 offset3"> 

     <%= form_for @user, :html => {:multipart => true} do |f| %> 
     <%= render 'fields', object: f.object, f: f %> 

     <%= f.submit "Save changes", :class => "btn btn-large btn-primary", :style =>"display:block;" %> 

     <%= image_tag(@user.image_url(:thumb), :class => "image_avatar") if @user.image? %> 

     <%= f.file_field :image, :class=>"upload_button" %> 
     <% end %> 

    </div> 
</div> 

我使用devise gem,但這編輯未使用色器件路線(我使用設計註冊)。這可能會影響它嗎?

回答

1

是的,設計有一個sign_in方法。

但是,您的用戶在編輯他們的配置文件後不應該退出。

+0

哦哇謝謝你的rubydoc網站!我從來不知道它!嗯由於某種原因,即使在添加sign_in @user後,我的用戶仍然退出。你能想到這可能是什麼原因嗎? – Sasha 2012-04-12 22:17:00

+0

上述控制器代碼是否完整?什麼傳遞爲params [:用戶](顯示你的表單)? – DanS 2012-04-12 22:19:02

+0

我編輯的問題,而不是粘貼在評論 – Sasha 2012-04-12 22:34:42

2

我也遇到了這個奇怪的問題,在我的情況下,這是由於當用戶保存時重新生成密碼。儘管密碼字段不在配置文件表單中,但發生了這種情況。重置是通過ActiveRecord回調進行的,該回調爲用戶分配了隨機密碼的Facebook身份驗證。我通過確保我從不爲任何已設置encrypted_pa​​ssword的用戶分配隨機密碼來修復它。

通過監護寶石將用戶存儲在會話中,並且存儲的內容看起來像[[user_id],encrypted_pa​​ssword](在會話['warden.user.user.key']中)。當密碼被更改時,會話中的用戶查找會失敗 - 因爲加密的密碼不再匹配 - 因此用戶將被註銷。

相關問題