2010-06-19 5 views
0

사용자가 isbn을 입력 할 수있는 양식이 있으며 책 데이터를 조회하여 저장하려고 시도합니다. isbn 조회에 대한 유효성 검사가 실패한 경우 (예를 들어 누군가 잘못 입력 한 경우), isbn 조회가 실패한 경우 사용자가 수동으로 데이터를 입력 할 수있는 다른 양식으로 리디렉션하고 싶습니다 (수치 가격과 같은 다른 검증이 실패한 경우는 제외) .유효성 검사가 실패 할 때 새로운 작업으로 렌더링/리디렉션

방법에 대한 아이디어가 있으십니까? 도와 주셔서 감사합니다!

+2

포스트 컨트롤러 코드와 모델 코드 그래서 우리는 당신이 방법을 정확하게 볼 수 있습니다 물건 설치. –

답변

1

당신이 뭘하려는 건지 이해하려고 노력 : 내 가정이 잘못되면 저를 수정하시기 바랍니다.

ISBN이 유효하지 않아 모델을 저장할 수없고 에 대한 양식을 표시하려는 경우 다른 필드는 OK이므로 ISBN은으로 표시됩니다. 다른 속성을 보유하기 위해 할 수있는 몇 가지 작업이 있습니다. 한편 : 다음이 보이지 않는다 당신이 모델을 저장할 수없는 경우 양식 세션에서

  • 스토어를 렌더링 숨겨진 필드와

    • 출력 그들을 있도록

    를 리디렉션 할 수 있습니다 에 다른 작업으로 리디렉션 할만한 이유가 있습니다. 사용자가 create 작업을 완료하려고 시도하고 있지만 단, ISBN 만 다른 양식을 렌더링하려는 경우는 예외입니다. 여기

    내가 세션을 사용하여 할 거라고 방법은, 그래서 당신이해야 할 경우 다른 조치로 리디렉션이 적응할 수

    def create 
        book = Book.new(params[:book].reverse_merge(session[:unsaved_book])) 
        if book.save? 
        session.delete[:unsaved_book] 
        flash[:notice] = 'I love it!' 
        redirect_to book 
        else 
        if book.errors.on[:isbn] && book.errors.length == 1 
         session[:unsaved_book] = params[:book] 
         flash[:error] = 'Sorry, wrong ISBN number.' 
         render 'unknown_isbn' 
        else 
         flash[:error] = 'Check your inputs.' 
         render 'new' 
        end 
        end 
    end 
    
  • +0

    답변 해 주셔서 감사합니다! 이것은 많은 도움이되었습니다. 내가 끝낸 것은 params를 저장하고 제목과 작성자 필드 만 있고 병합을 수행하는 새 양식 (ISBN 오류를 삭제)으로 리디렉션하는 것이 었습니다. 첫 번째 양식에는 IBSN, 가격 및 설명을위한 상자 만 있습니다. 두 번째 양식 (ISBN이 유효하지 않은 경우)에는 제목, 저자 및 판이 있습니다. ISBN이 유효하지 않거나 잘못 입력 된 경우 사용자는 수동으로 서적 데이터를 입력해야합니다. – Ben

    0

    필자는 오타 일 수도 있으므로 조회가 실패한 경우 isbn을 다시 입력 할 수있는 옵션을 제공합니다. 리디렉션의 경우

    :

    redirect_to invalid_input_path and return unless model.valid? 
    redirect_to isbn_lookup_failed_path and return unless model.do_isbn_lookup 
    .... 
    
    +0

    예, 지금은 그 유일한 옵션입니다. 앱을 수동으로 데이터에 입력 할 수있는 다른 양식으로 리디렉션 할 수 없습니다. 현재는 isbn 및 가격 필드 만있는 원래 형식으로 반환됩니다. – Ben

    관련 문제