2009-05-07 4 views
0

start_day와 end_day가 같을 때 데이터베이스에서 레코드를 가져 오려고 할 때 문제가 있습니다. 어쩌면 레코드를보고 싶을 수 있습니다. "from"6 월 2009 To 6 수 있습니다 2009.It 내게 레코드를 제공하지 않습니다 그리고 거기에있는 경우에만 레코드를 내게 데이터베이스를 "에서"06 있습니다 2009 년 5 월 2009 년 5 월 수 있습니다. 내 코드입니다.날짜와 시간이있는 데이터베이스에서 레코드 가져 오기

데프 generate_emails

@start = "#{params[:start][:day]}-#{params[:start][:month]}-#{params[:start][:year]}" 
@start_date = Date.parse(@start) rescue 
if [email protected]_date 
    render :update do |page| 
    page.hide "flash-error" 
    page.visual_effect :highlight, "flash-error", :duration => 3 
    page.replace_html "flash-error", "Invalid date, You selected #{params[:start][:day]} days for the #{params[:start][:month]} month" 
    page.show "flash-error" 
    end 
    return 
end 

@end = "#{params[:end][:day]}-#{params[:end][:month]}-#{params[:end][:year]}" 
@end_date = Date.parse(@end) rescue 
    if [email protected]_date 
    render :update do |page| 
     page.hide "flash-error" 
     page.visual_effect :highlight, "flash-error" 
     page.replace_html "flash-error", "Invalid date, You selected #{params[:end][:day]} days for the #{params[:end][:month]} month" 
     page.show "flash-error" 
     end 
    return 
end 
@sent_message = SentMessage.find(:all, :conditions => ["message_type='Email' AND estate_id=? AND sent_date >= '#{@start_date}' AND sent_date <= '#{@end_date}' OR sent_date ='#{@start_date}' AND sent_date = '#{@end_date}' ", @estate_id], :order => "sent_date DESC") 

편집 적어도 나는 대답을 얻었다

..

데프 세대 erate_emails

@start = "#{params[:start][:day]}-#{params[:start][:month]}-#{params[:start][:year]}" 
@start_date = Date.parse(@start)rescue 
if [email protected]_date 
    render :update do |page| 
    page.hide "flash-error" 
    page.visual_effect :highlight, "flash-error", :duration => 3 
    page.replace_html "flash-error", "Invalid date, You selected #{params[:start][:day]} days for the #{params[:start][:month]} month" 
    page.show "flash-error" 
    end 
    return 
end 

@end = "#{params[:end][:day]}-#{params[:end][:month]}-#{params[:end][:year]}" 
@end_date = Date.parse(@end) rescue 
    if [email protected]_date 
    render :update do |page| 
     page.hide "flash-error" 
     page.visual_effect :highlight, "flash-error" 
     page.replace_html "flash-error", "Invalid date, You selected #{params[:end][:day]} days for the #{params[:end][:month]} month" 
     page.show "flash-error" 
     end 
    return 
end 

if @start_date == @end_date 
    @start_date = DateTime.parse(@start)-1 
    @end_date = DateTime.parse(@end) 
    @sent_message = SentMessage.find(:all, :conditions => ["message_type='Email' AND estate_id=? AND sent_date >= '#{@start_date}' AND sent_date = '#{@end_date}' ", @estate_id], :order => "sent_date DESC") 
end 

@sent_message = SentMessage.find(:all, :conditions => ["message_type='Email' AND estate_id=? AND sent_date >= '#{@start_date}' AND sent_date <= '#{@end_date}' OR sent_date ='#{@start_date}' AND sent_date = '#{@end_date}' ", @estate_id], :order => "sent_date DESC") 

난 당신이 Date.parse@start@end을 구문 분석하는 데 실패 여부를 확인 좋을 것
+0

코드를 다시 읽을 수 있도록 다시 포맷 할 수 있습니까? 그것은 당신이 "구출"선언의 일부가 누락 된 것 같습니다 ... – scraimer

답변

0

- 확률은 당신이 params에서 받고있어 값이 올바르게 구문 분석 할 수없는 좋은 루비 코드를 실행하는 응용 프로그램의 로케일.

+0

고마워요하지만 내가 대답을 내놓았습니다. 왜냐하면 당신이 원하는 날짜를 선택하기 만하면 답을주었습니다. "05 2009 "~"06 may 2009 ". 그러나 사용자가보기로하는 것이 아니므로, 평등하면 하루를 빼는 방법을 찾았습니다. –

관련 문제