2017-02-25 1 views
3

activeadmin에서 create를 덮어 써야하는 상황이 있습니다. 필드를 자동 완성하고 데이터가 이미 존재하면 업데이트해야합니다. 여기 내 생성 방법 :컨트롤러를 재정의 한 후 activeadmin 양식에 오류를 표시하는 방법

def create 
     id = params[:company].dig(:id) 
     if id.present? 
     @company = Company.find(id) 
     if @company.update(permitted_params[:company]) 
      redirect_to resource_url 
      flash[:notice] = 'Company created successfully' 
     else 
      #add errors to semantic errors 
     end 
     else 
     new_permitted_params = permitted_params[:company].except(:id) 
     @company = Company.new(new_permitted_params) 
     @company.save 
     if @company.errors.any? 
      #add this to semantic errors so that activeadmin handles and displays the errors 
     end 
    end 
    end 

나는 그/그녀가 잘못된 항목을 입력 한 경우 사용자가 알 수 있도록 검증을 위반 오류를 표시합니다.

나는 this을 찾았지만 해결 방법 이상의 해결책이 될 것 같습니다. 이 문제를 해결하도록 도와주세요.

미리 감사드립니다.

답변

2

new.html.arb이라는보기에서 새 HTML 파일을 만들고 insert_tag renderer_for(:new)을 추가했습니다. 그 후에 내가 한 것은

if @company.errors.any? 
    render 'new' 
end 

activeadmin의 기본 동작을 보면 알 수 있습니다. 비슷한 일을하려는 다른 사람들에게 도움이되기를 바랍니다. 이것은 제가 얻었고 저에게 요구되는 결과입니다. 클라이언트 측 로직은 id.present에 따라 다른 URL로 제출하면

Fields with validation errors.

0

내가 궁금해? 더 편안하게 만들 수 있습니다.

+0

내가 왜 이런 짓을했는지 설명해 드리겠습니다. 이 양식에 자동 완성 기능을 적용했으며 수신중인 모든 필드를 설정하고 있습니다. 이것이 바로 논리가 작용하는 부분입니다. ID가 설정되면 (자동 완성시 오브젝트를 선택하지 않은 경우는 아님), 그렇지 않으면 업데이트를 작성하십시오. – UsamaMan