2012-01-24 119 views
0

我正在使用Rails 3和創建產品時,在URL中傳遞的日期是當前/當前日期,但選擇器中的日期是前一天的一天。當前日期不符合URL日期

你能告訴我如何解決這個問題嗎?

例如products/new?date = 2012-01-24是當前日期,但下拉列表中的日期顯示爲2012年1月 - 23日。

請指導。

<p> 
    <%= f.label :title, t("products.title") %><br /> 
    <%= f.text_field :title %> 
</p> 
<p> 
        <%= f.label :date, t("products.time") %> 
      <select name="hour" id="hour"> 
      <% time = Time.zone.now.strftime("%H").to_i 
     if time > 12 
      time = time - 12 
      am = false 
     else 
      am = true 
     end %> 
      <% if controller.action_name == "edit"%> 
      <% if return_timesetting == 0%> 
       <% for item in 0..23 %> 
        <% if @product.date.strftime("%H").to_i > 12 
         am = false 
        else 
         am = true 
        end %> 
       <option value="<%= item%>"<%if item == @product.date.strftime("%H").to_i%> SELECTED<%end%>><%= item%></option> 
      <% end %> 
     <% else %> 
      <% for item in 1..12 %> 
      <% time2 = @product.date.strftime("%H").to_i 
      if time2 > 12 
       am = false 
      else 
       am = true 
      end 
      if time2 == 0 
       time2 = 12 
       am = true 
      elsif time2 == 12 
       am = false 
      end 
%> 
      <% if time2 > 12%> 
       <option value="<%= item%>"<%if item == (time2 - 12)%> SELECTED<%end%>><%= format_hour(item)%></option> 
      <% else %> 
       <option value="<%= item%>"<%if item == time2%> SELECTED<%end%>><%= format_hour(item)%></option> 
      <% end %> 
      <% end %> 
     <% end %> 
      <%else%> 
      <% if return_timesetting == 0%> 
      <% for item in 0..23 %> 
      <option value="<%= item%>"<%if item == Time.zone.now.strftime("%H").to_i %> SELECTED<%end%>><%= item%></option> 
      <% end %> 
     <% else %> 
      <% for item in 1..12 %> 
      <option value="<%= item%>"<%if item == time %> SELECTED<%end%>><%= format_hour(item)%></option> 
      <% end %> 
     <% end %> 

     <%end%> 
      </select> 
      : 
      <select name="minute" id="minute"> 
      <% if controller.action_name == "edit"%> 
       <% [0,5,10,15,20,25,30,35,40,45,50,55].each do |item| %> 
       <option value="<%= item%>"<%if item == @product.date.strftime("%M").to_i%> SELECTED<%end%>><%= format_minutes(item) %></option> 
      <% end %> 
      <%else%> 
     <% [0,5,10,15,20,25,30,35,40,45,50,55].each do |item| %> 
      <option value="<%= item%>"><%= format_minutes(item) %></option> 
     <% end %> 

     <%end%> 
      </select> 

      <% if return_timesetting == 1%> 
      <% if am == true 
       selected = "am" 
       else 
       selected = "pm" 
       end%> 
      <%= select_tag "am_pm", options_for_select(["am", "pm"], selected)%> 
      <% end %> 

     <%= f.date_select 'date' %> 
      </p> 


<p> 
    <%= f.label :description, t("products.description") %><br /> 
    <%= f.text_area :description, :rows => 3 %> <br /> 
    <%= f.check_box :public, :checked => (@product.new_record? ? current_user.public_events : @product.public) %> 
    <%= f.label t("products.set_public"), :for => "product_public" %> 
</p> 




     <input type="hidden" name="date" value="<%[email protected]%>" id="date" /> 
+0

在哪個下拉菜單中?請告訴我們你的代碼。 – Mischa

回答

0

我想選擇走UTC時區是不同的時區,以獲得問題的更深入的瞭解嘗試Time.now方法,看看時間。如果問題在於時差,請在選擇器中使用utc_offset

+0

其實,我嘗試了抵消的東西,但時間顯示提前1天。 – Metal

+0

你的意思是說顯示的時間與當地時間相同,但日期不同?當嘗試'Time.now'時? – uday