사용자가 로그인 한 상태에서 비밀번호를 입력하지 않고도 프로필을 업데이트 할 수 있도록 노력하고 있습니다. 그러나 사용자가 로그인되어 있어도 비밀번호를 입력하지 않으면 수정할 수 없습니다.Devise가 편집을 위해 비밀번호가 필요합니다.
는이 오류 얻을 :
1 error prohibited this user from being saved:
Current password can't be blank
<h1>User profile home</h1>
<p><%= @user.inspect %></p>
<p><%= @user.first_name %></p>
<p><%= @user.last_name %></p>
<p><%= @user.bio %></p>
<h3>Edit profile</h3>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
<%= devise_error_messages! %>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %>
</div>
<div class="field">
<%= f.label :bio %><br />
<%= f.text_area :bio %>
</div>
<div class="field">
<%= f.label :first_name %><br />
<%= f.text_field :first_name %>
</div>
<div class="field">
<%= f.label :last_name %><br />
<%= f.text_field :last_name %>
</div>
<div class="actions">
<%= f.submit "Update" %>
</div>
<% end %>
업데이트 컨트롤러를
class ProfilesController < Devise::RegistrationsController
include AuthenticationConcern
def home
user_id = params[:id]
check_user_route_access current_user, user_id
@user = User.find_by id: user_id
end
def update
super
end
protected
def update_resource(resource, params)
resource.update_without_password(params)
end
end
그래서 가이드를 따라 갔지만 여전히 운이 없습니다. 나는 아직도 잘못하고 있니? :( – Clement
위 업데이트 된 컨트롤러를 게시했습니다. – Clement