2011-10-10 4 views
0

날짜 선택이있는 양식이 있습니다. 내 모델레일 날짜가 모델에 따라 변경됨

<%= date_select :user, :birthday, {:start_year => Time.now.year, :end_year => 1910,:order => [:day,:month,:year], :prompt => { :day => 'day', :month => 'month', :year => 'year' }}, { :class => "default" } %>    

확인 :

"user"=>{"name"=>"rewrwe", "birthday(3i)"=>"1", "birthday(2i)"=>"", "birthday(1i)"=>"2008", "email"=>""}} 

참고 : 여기에

validates :birthday, :if => :should_validate_birthday?, 
      :presence => {:message => "Please enter your friend's birthdate"}, 
      :date =>  { :after => Date.civil(1910,1,1), :before => Date.today, :message => "Please enter a valid date"} 

은 사용자가 로그에 제출 무엇의 예입니다

나는 다음과 같은 형태를 따른다 그 달의 값이 공백이라는 것. 컨트롤러의

나는

create 
@user = User.new(params[:user]) 

If @user.save 
#go to the confirm page 
end 

end 

없음 오류 메시지가 나는 그것이 "1월"에 빈 개월을 변환하거나 모델을 저장하려고 할 때 달이 어떤 이유가 없기 때문에 경우에도 표시되지 않습니다 사용자를 생성 01.

사용자가 우연히 잘못된 데이터를 제출하는 것을 원치 않으므로 매우 실망 스럽습니다.

레일스에서이를 방지하고 모든 날짜 정보가 제출되도록하려면 어떻게해야합니까? attr_accessor

답변

1

분리 된 세 개의 필드 :보기에

class User < ActiveRecord::Base 
    attr_accessor :birthday_year, :birthday_month, :birthday_date 
    validates_presence_of :birthday_year, :birthday_month, :birthday_date 
    # ... 
end 

그리고는 그들 각각에 대해 서로 다른 선택이있다. 그것은 date_select가하는 모든 것입니다. 그러나 모델에서보다는 뷰에서이를 나눕니다. 각 필드의 유효성을 검사하기가 어렵습니다.

관련 문제