2011-10-08 8 views
0

중첩 된 양식에 Formtastic 2를 사용하고 있습니다. 메뉴 및 식사 모델이 있고, 메뉴가 많으며, 모든 식사가 하나의 메뉴에 속합니다. 나는 이미 연관된 식사 목록 바로 아래에있는 메뉴 쇼 동작에 식사 형태를 추가했습니다.레일 3.1 중첩 된 양식 유효성 검사

유효성 검사가 성공적으로 완료되면 식사 만들기가 정상적으로 작동하며 목록에 작성된 식사를 다시 나열하는 메뉴 표시 작업으로 전달합니다.

식사가 확인되지 않고 적절한 플래쉬 메시지로 조치를 다시 표시하면, 나는 이전에 제출 된 데이터로 양식을 채우고 그 옆에 오류를 표시하고 싶습니다. .

내가이 리디렉션으로 시도 :

redirect_to(menu_path(menu,@meal), :alert => 'The meal was not created') 

하지만 식사 변수에서 얻을 다시 폼에이 방법을 통과 할 수없는 요청 자체는 메뉴 ID로 GET 요청입니다.

답변

2

모든 상태를 잃어 버리기 때문에 유효성 검사 오류 후 리디렉션하지 않아야합니다. 검증에 실패한 직후의 오래된 템플릿. 약간의 문제는 flash.now[:alert]을 사용해야하므로 다음 페이지로 넘어 가지 않습니다. 내 최초의 문제는 컨트롤러 구조의 오해 것을 발견하지만, 자네 말이 맞아

def new 
    @meal = Meal.new 
end 

def create 
    @meal = Meal.new(params[:meal]) 
    if @meal.save 
    flash[:notice] = "Meal was created" 
    redirect_to menu_path(menu, @meal) 
    else 
    flash.now[:alert] = "The meal was not created" 
    render :new 
    end 
end 
+0

:

보통이 구조을해야합니다. 나는 완전한 CRUD를 가진 MenuController와 MealController를 가졌지 만, 메뉴 표시 액션에 식사를 추가 할 때 식사를 추가하는 코드는 MenuController에 있어야만 식사가 생성됩니다. MealController를 제거 할 수 있습니다. –