2012-12-21 1 views
0

좋아, 나는 뭔가 간단한 것을 놓치고있어.레일 폼 유효성 검사가로드하기 전에 페이지로드에 나타납니다.

내가 (메트릭을 추가하기위한 추가 프로그램 하나 하나) 내 형태의

<%= render 'shared/error_messages', object: f.object %>

를 처리하는 부분 "/shared/_error_messages.html.erb"를 사용하고 있습니다.

양식 (/ programs/new 및 metrics/new)으로 이동하면 페이지가로드 될 때 유효성 검사가 나타납니다.

programs_controller 및 metrics_controller

는 구조적으로 동일 (metrics_controller에 @programs에 대한 @metrics 교환) :

#programs_controller.rb 
def new 
    @programs = Program.new(params[:name]) 
    if @programs.save 
    flash[:success] = "Program saved" 
    redirect_to "/program" 
    else 
    render 'new' 
    end 
end 

이 원인이 될 수있는 어떤 아이디어가? 나는이 오류가 무엇인지 모르는

<% if object.errors.any? %> 
    <div id="error_explanation"> 
    <div class="alert alert-error"> 
     The form contains <%= pluralize(object.errors.count, "error") %>. 
    </div> 
    <ul> 
    <% object.errors.full_messages.each do |msg| %> 
     <li>* <%= msg %></li> 
    <% end %> 
    </ul> 
    </div> 
<% end %> 
+0

: 같은
뭔가? – oldergod

+0

제출이 푸시 될 때까지 Object.errors가 없을 것이라고 생각했습니다. – Chiperific

+0

하지만 그렇다면 오류가 있는지 확인하는 코드는 어디에 있습니까? 당신은'<% if object.errors.any? %>'오류 부분의 맨 위에 있습니까? – oldergod

답변

3

하지만 문제는이 new 행동에 개체를 저장하는 것입니다 :

는 다음 부분을합니다. 저장시 오브젝트 오류가 생성됩니다. 그것이 당신이 그들을 보는 이유입니다.

RESTful 방법으로 새 ​​작업은 모델을 인스턴스화하고 양식에 개체를 전달해야합니다. 양식을 create 조치에 제출합니다. 여기서 개체를 저장하고 오류를 확인해야합니다. 나는이`게재에서 부분 error_messages` 방지 할 수 코드에서 아무것도 표시되지 않습니다

#programs_controller.rb 
def new 
    @programs = Program.new 
end 

def create 
    @programs = Program.new(params[:program]) 
    if @programs.save 
    # success 
    else 
    # failure 
    end 
end 
+1

예, 그는 '새로운'작업마다 기록을 저장하려고합니다. 유효성 검사가 실행되고 오류가 발생합니다. –

+0

나는 그런 멍청하다. 나는 그것에 대해 모두 잘못 생각하고 있었다! – Chiperific