2013-11-21 5 views
2

나는 베스트 플레이스 (in in place) 또는 휴식 (in-place) 또는 장소 수정 (in-place editing)을 제공하는 보석을 사용하고자하는 레일 4 앱을 가지고 있습니다.내 레일 4 앱에서 내부 편집을 방지 할 수있는 기능은 무엇입니까?

나는이 두 가지를 사용해 보았습니다. 둘 다 사용하여 사용자의 "이름"속성을 편집 가능하게 설정했습니다.

사용자의 쇼 페이지를 방문 할 때 이름을 클릭하면 입력 필드가 나타납니다. 그러나 제출되면 레코드를 업데이트하지 않습니다.

로그 :

Processing by UsersController#update as JSON 
    Parameters: {"user"=>{"name"=>"lkj"}, "authenticity_token"=>"TOz1cbnLc5KrX5JLZl0hiOsf7ZvwXhp6lD2qUIfH+og=", "id"=>"7"} 
    User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = '62f0af062cc8544a31bfe5a02ef00bf34d449959' LIMIT 1 
    User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", "7"]] 
    (0.1ms) begin transaction 
    User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('[email protected]') AND "users"."id" != 7) LIMIT 1 
    (0.1ms) rollback transaction 
Completed 500 Internal Server Error in 41ms 

그것이 전송되는 메시지가 PUT과 패치하지 않는 것이 될 수 있을까? 사용자 컨트롤러

내 업데이트 조치 : 어떤 도움이 많이 이해할 수있을 것이다

def update 
    if @user.update_attributes(user_params) 
     flash[:success] = "Perfil actualizado" 
     sign_in @user 
     redirect_to @user 
    else 
     render 'edit' 
    end 
end 

.

감사합니다.

+0

경로 파일은 무엇입니까? – ksu

답변

1

다음에

if @user.update_attributes(user_params) 

을 변경하는 경우 :

if @user.update_attributes!(user_params) 

오류에 대한 자세한 메시지를해야합니다.

이것이 작동하지 않으면 로그에서 params 해시를 보려면 Rails.logger.debug(user_params)을 시도하십시오.

요약 : 따라

def update 
    if @user.update_attributes!(user_params) 
     flash[:success] = "Perfil actualizado" 
     sign_in @user 
     redirect_to @user 
    else 
     render 'edit' 
    end 
end 

디버그!

+0

감사합니다 jquadrin, 오류의 더 자세한 메시지와 함께 나는 user_params 또한 유효성 검사를 통과하지 못했습니다 null 값을 가진 '암호'매개 변수를 보내고 실현. 고마워, 안부. –