我正在使用Rails 3并且在创建产品时,在网址中传递的日期是当前/现在的日期,但选择器中的日期是前一天的日期。
你能建议我如何解决这个问题吗?
e.g。 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="<%=@date%>" id="date" />
答案 0 :(得分:0)
我认为选择器正在采用与您的时区不同的UTC时区,以便更深入地了解问题,尝试Time.now
方法来查看时间。如果问题是时区不同,请在选择器中使用utc_offset
。