2012-01-24 9 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

私は、セレクタは、時間を見てTime.now方法を試し、問題のより深い洞察を得るために、あなたのタイムゾーンは異なるUTCタイムゾーンを取っていると思います。問題がタイムゾーンの違いなら、セレクタでutc_offsetを使用してください。

+0

実際には、オフセットしたものを試しましたが、時刻は1日先に表示されます。 – Metal

+0

表示される時刻はあなたの現地時間と同じですが、日付は異なりますか? 'Time.now'をしようとするとき? – uday

関連する問題