2012-02-10 2 views
0

에 대한 유효성 확인 모델 오브젝트에 의해 생성 된 양식이 있습니다. 여기 모델 양식

def new 
    @pages = Page.new 

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

모델 코드 : 여기
<%= form_for(@pages) do |f| %> 

    <p> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </p> 
<% end %> 

이에 대한 제어 방법입니다. 이제

class Page < ActiveRecord::Base 
validates :title, :presence => true 
end 

, 내가 제출의 양식을 검증 할 수있는 방법 (내가 알고 제출 버튼이 없으면 나중에 추가 할 것입니다.) 나는 형태로 <%= f.error_messages %>을 사용했지만 그것은 나에게 오류주고있다 :

내가 그것을 어떻게

NoMethodError in Pages#new 

Showing C:/rorapp/app/views/pages/_form.html.erb where line #2 raised: 

undefined method `error_messages' for #<ActionView::Helpers::FormBuilder:0x49b9ca8> 
Extracted source (around line #2): 

1: <%= form_for(@pages) do |f| %> 
2: <%= f.error_messages %> 
3: <p> 
4:  <%= f.label :title %><br /> 
5:  <%= f.text_field :title %> 
Trace of template inclusion: app/views/pages/new.html.erb 

Rails.root: C:/rorapp 

Application Trace | Framework Trace | Full Trace 
app/views/pages/_form.html.erb:2:in `block in _app_views_pages__form_html_erb__975660997_39217440' 
app/views/pages/_form.html.erb:1:in `_app_views_pages__form_html_erb__975660997_39217440' 
app/views/pages/new.html.erb:2:in `_app_views_pages_new_html_erb___256256638_47476836' 
app/controllers/pages_controller.rb:11:in `new' 
Request 

Parameters: 

{"title"=>"", 
"author"=>"", 
"email"=>"", 
"body"=>"", 
"reference"=>"Google"} 
Show session dump 

Show env dump 

Response 

Headers: 

None 
을 유효성을 검사 할 수 있습니다 를?

답변

1

질문을 올바르게 이해하고 있다면 제출시 양식의 유효성을 검사하는 방법과 오류가있을 때 오류를 표시하는 방법을 알고 싶습니까?

제출 버튼을 누르면 모델의 유효성 검사가 현재 "제목"필드의 유효성을 검사합니다. 그래서 저는 그 점에서 당신이 이미 좋은 사람이라고 생각합니다.

<%= form_for @pages do |f| %> 
    <h2><%= "#{pluralize(@pages.errors.count, "error")} prohibited this from being saved:" %></h2> 
    <% @pages.errors.full_messages.each do |msg| %> 
    <li><%= msg %></li> 

    <p> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </p> 
<% end %> 

이 우아한 방법으로 오류를 처리합니다

하는 오류가 귀하의 의견에 표시 할 얻으려면, 당신이 뭔가를 사용하고자하는 양식입니다. 둘 이상의 오류가있는 경우 pluralize 메서드는 오류 word의 복수화를 처리하므로 "2 오류로 인해 저장이 금지되었습니다."와 같은 문장이 읽 힙니다. 그렇게하면 더 많은 필드를 추가하기로 결정하면 이미 좋은 결과를 얻을 수 있습니다.

그러면 pages.errors.full_messages은 각 오류를 사용자가 이해할 수있는 문장으로 표시합니다.

2

내 레일 경험은 대부분 버전 2.3.14로, 그래서 이것에 대해 100 % 확신 할 수는 없지만, f.error_messages이 레일에서 감가 상각 된 것 같습니다 버전 3.0

이 이전 질문에 도움을합니까? f.error_messages in Rails 3.0

편집 : 기본적으로 나는 당신이 이전 버전의 오류를 표시하려고 시도하고있는 것처럼 보입니다. 이는 레일즈 버전과 호환되지 않는 것 같습니다. 위에서 게시 한 링크에는 몇 가지 제안 사항이 있습니다.

관련 문제