현재 우리는 사용자의 시간 입력으로 작업하고 있습니다.루비 온 레일즈 (Ruby on Rails) 시간의 문자열 입력을 가져 와서 정수로 저장
우리는 사용자에게 가장 자연스러운 문자열로 입력을 받아들입니다. ex. 12:30, 1:30.
시간은 특정 날짜를 기준으로하는 것이 아니라 하루 중 시간대를 기준으로합니다.
그러나 우리 모델에서는 실제 시간을 정수 (자정 이후 초)로 저장하려고합니다. 어떤 제약 검사를하기 위해 정수로 필요하고 무엇이 필요하지 않은가? 또한
Time.at().utc.strftime("%I:%M%p")
우리가로 실행하는 문제 자정 이후 초를 변환하기 전에 우리가 정규식 사용자가 문자열 입력을 유효성을 검사 할 것입니다 함께 멋진 캐릭터를 다시 한 후 출력에 우리에게 쉬울 것이다 그것을 저장합니다. 그러나 우리 모델 validates_by_format 전에 필드가 이미 일종의 정수 유형으로 변환 된 것 같습니다. 우리가 변환하고 정수로 (자정 이후 초) 저장하기 전에 정규 표현식을 사용하여 사용자 입력을 검사하는 방법에 대한 아이디어가 있습니까?
는 여기에 우리의 코드 snipits의 일부입니다 :
모델은 우리 테이블start_time :integer
end_time :integer
def create
@course_offering = current_term.course_offerings.new(params[:course_offering])
if @course_offering.save
#flash[:success] = "Offering created"
@conflicts = conflicts(@course_offering)
render :show
else
render :new
end
end
새로운 컨트롤러 기능에
validates_format_of :start_time, :with => /\A(1[0-2]|[1-9]):[0-5][0-9]\z/, :message => "Must be valid time format"
필드를 확인
vi EW
<% form_for @course_offering do |f| %>
<!-- other fields above this -->
<p>
<%= f.label :start_time %><br>
<%= f.text_field :start_time %>
</p>
<p>
<%= f.label :end_time %><br>
<%= f.text_field :end_time %>
</p>
<% end %>
new.html.erb 또는 동급 제품을 게시하십시오. –