2012-08-13 3 views
0

새로운 방법없이 모델 오류보고를 수행 할 수 있습니까? 할 수있다, 그러나모델 새 방법없이보고하는 중 오류가 발생 했습니까?

<% if @product.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@product.errors.count, "error") %> prohibited this product from being saved:</h2> 

     <ul> 
     <% @product.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

: 당신이 오류를보고 할 때 다음과 같은 컨트롤러 코드 생성 것이 나의 이해이다

def new 
    @product = Product.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @product } 
    end 
    end 

    def create 
    @product = Product.new(params[:product]) 

    respond_to do |format| 
     if @product.save 
     format.html { redirect_to @product, notice: 'Product was successfully created.' } 
     format.json { render json: @product, status: :created, location: @product } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @product.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

을 그리고 당신은 그 안에 다음 코드를 사용하여 양식을 만들 것 컨트롤러에서 'create'메서드를 사용하여이 기술을 복제합니까? 예를 들어 form_tag를 사용하여 데이터를 'create'메소드에 전달합니다. 이 같은 아마 뭔가 :

'포스트': 클래스 => '형태의 수평': 스타일 => '텍스트 정렬 : 센터') 할 %>
  <% unless @product.blank? %> 
       <% if @product.errors.any? %> 
       <div id="error_explanation"> 
        <h2><%= pluralize(@product.errors.count, "error") %> prohibited this product from being saved:</h2> 

        <ul> 
        <% @product.errors.full_messages.each do |msg| %> 
        <li><%= msg %></li> 
        <% end %> 
        </ul> 
       </div> 
       <% end %> 
      <% end %> 

       <%= text_area_tag :content, '', :placeholder => 'Ask your classmates anything...' %> 
       <%= hidden_field_tag :user_id, current_user.id %> 
       <%= submit_tag 'Post', :class => "btn btn-medium btn-primary post-room-button" %> 
      <% end %> 

내가이 일을 시도하고있다 , 그러나 나는 그것이 작동하도록하는 방법을 찾을 수 없습니다. 내 모델에서 검증에 실패한 양식을 제출할 때마다 페이지는 내 컨트롤러에서 내 respond_to 기능의 '다른'경로로 리디렉션됩니다.

답변

0

경쟁자의 새로운 방법을 컨트롤러에서 제거 할 수 있지만보기 파일에있는 새로운보기는 제거 할 수 없습니다.

렌더링 작업 : "new"는 new.html.erb 파일을 앱의보기 폴더에 렌더링하고 redirect_to 액션을 말할 때 : "new"는 컨트롤러의 새 작업을 호출하고 새 작업에있는 작업을 수행 한 다음 new.html.erb를 렌더링합니다.

뷰 파일이 없으므로 만들기 작업을 렌더링 할 수 없으며 GET 요청이 아닌 POST 요청에 의해 REST가 지원됩니다.

관련 문제