2009-05-20 4 views
0

사용자 프로필을 편집 할 수있는 Ruby on Rails 페이지가 있습니다. 양식에 사용자 이름과 전자 메일이 올바르게 표시됩니다. 텍스트 상자에서 이름을 변경하고 업데이트를 클릭하면 '프로필이 성공적으로 업데이트되었습니다.'라는 메시지가있는 edit_profile 페이지에서 다시 끝납니다. 문제는 이름을 데이터베이스로 저장하지 못하도록 변경 한 값입니다.문제 저장 레일 양식

오류가없고 서버 출력의 매개 변수가 올바르게 표시됩니다.

처리 UsersController # 1 업데이트 (2009-05-19 22시 0분 48초 에 대해 127.0.0.1) PUT] 파라미터 : { "사용자"= "{"이름 "=>"새 이름 " , "email"=> "[email protected]"}, "커밋"=> "업데이트", "조치"=> "업데이트", "_ 방법"=> "넣기", "authenticity_token"= > "59c79fa90aaf5558aaab8cddef6acb7a4c7c55c3" "ID"=> "1", "컨트롤러"=> "사용자"}

나는 무엇을 놓치고?

edit_profile.html.erb

<% form_for @profile, :url => {:action => "update", :id => @profile} do |f| %> 
    <%= f.error_messages %> 
    <p>Name: <%= f.text_field :name %></p> 
    <p>Email: <%= f.text_field :email %></p> 
    <%= f.submit "Update" %> 
<% end %> 

users_controller.rb

def edit_profile 
    @profile = User.find(current_user.id) 
    end 

    def update 
    @profile = User.find(params[:id]) 
    respond_to do |format| 
     if @profile.update_attributes(params[:profile]) 
      flash[:notice] = 'Profile was successfully updated.' 
      format.html { render :action => 'edit_profile' }   
     else 
      flash[:notice] = 'Profile Error.' 
      format.html { render :action => "edit_profile" }   
     end 
     end 
    end 

편집 : 예이 ... 나는 변경이 문제를 해결하는 네이밍 문제였다

if @profile.update_attributes(params[:profile]) 

to

if @profile.update_attributes(params[:user]) 

답변

1

필드의 이름이 update_attributes 메소드에 전달하는 것과 일치하지 않습니다.

확인 양식 필드의 이름 (사용하여 불을 지르고), 그리고 등 "이름"

하지만 "PARAMS"라는 배열 전달하는 것입니다 :

update_attributes(params[:profile]) 

양식 필드를 제대로 작동하려면 "프로필 [이름]"이라고해야합니다.

development.log를 확인하면 업데이트가 호출되지 않습니다.

+0

네, 맞습니다. 고마워요 토비. – Mark