2011-01-28 4 views
0

저는 Entry 모델과 Photo 모델을 가지고 있으며 각 사진에 대해 사용자가 사진에 대한 텍스트 만 제출할 수 있습니다. 각 사진의 쇼 페이지에서 항목의 전체 양식을 렌더링합니다. 나는 300 개 이상의 단어가 항목을 테스트 할 때레일 3에 오류 메시지가 표시되지 않습니다

validate :count_words 

def count_words 
    body_size = body.to_s.scan(/[\w-]+/).size 
    unless body_size < 300 
     errors.add(:entry, "Your entry is too long") 
    end 
end 

, 저장이 실패하고 내 컨트롤러들이 하나였다 페이지로 다시 리디렉션 내 entry.rb 파일에서, 나는 항목의 말씀을 계산하려면 다음을 . 두 가지 문제. 컨트롤러가 리디렉션 할 때 첫 번째 오류 메시지가 표시되지 않습니다. 나는 이것을 양식으로 만들었습니다 (그것은 비계로 생성되었습니다). 내가 어디에 문제가 아주 확실하지 않다

def create 
    @entry = Entry.new(params[:entry]) 

    respond_to do |format| 
     if @entry.save 
     format.html { redirect_to(@entry, :notice => 'Your entry was submitted.') } 
     else 
     format.html { redirect_to :back } 
     end 
    end 
    end 

:

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

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

이 나는 ​​문제가있다 생각 컨트롤러 액션이다. 어쨌든 제출 전에 유효성을 검사하는 양식에 일부 자바 스크립트를 구현할 계획이지만 백업으로 이것을 원합니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?

답변

1

일반적으로 else 문은 redirect :back 대신 format.html { render :edit }을 사용하고 싶습니다.

리디렉션 할 때 오류가 지속되지 않습니다 (데이터베이스 나 세션에 저장되지 않으므로).

관련 문제