我有一个表单,可以在数据库中创建一个新条目。其中一个字段使用jquery Datepicker。目前,我可以使用UI日历选择日期,并在文本框中以正确的格式显示,但是当我提交表单时,格式会更改回默认设置,并保存在数据库中。我以前在我的网站的旧版本上工作过,我尝试过已发布的问题,但没有运气。希望有人可以看到问题。感谢。
这是我的项目管理员的一部分:
def create
@project = Project.new(params[:project])
@project.client = params[:new_client] unless params[:new_client].blank?
@project.exception_pm = params[:new_exception_pm] unless params[:new_exception_pm].blank?
@project.project_owner = params[:new_project_owner] unless params[:new_project_owner].blank?
@project.role = params[:new_role] unless params[:new_role].blank?
@project.industry = params[:new_industry] unless params[:new_industry].blank?
@project.business_div = params[:new_business_div] unless params[:new_business_div].blank?
respond_to do |format|
if @project.save
format.html { redirect_to @project, notice: 'Project was successfully created.' }
format.json { render json: @project, status: :created, location: @project }
else
format.html { render action: "new" }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
以下是表单视图的一部分:
<%= form_for(@project) do |f| %>
<% if @project.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@project.errors.count, "error") %> prohibited this project from being saved:</h2>
<ul>
<% @project.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :start_date %><br />
<%= f.text_field :start_date, :class => 'datepicker' %>
</div>
<div class="field">
<%= f.label :end_date %><br />
<%= f.text_field :end_date, :class => 'datepicker' %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这是我的application.js文件:
$(function() {
$("#project_start_date").datepicker({dateFormat: 'dd-mm-yy'});
});
$(function() {
$("#project_end_date").datepicker({dateFormat: 'dd-mm-yy'});
});
提前致谢!
答案 0 :(得分:4)
您可以通过在config / initializers中创建date_formats.rb并添加以下行来快速设置日期的通用默认格式,而不是使用strftime:
Date::DATE_FORMATS[:default] = "%m-%d-%Y"
答案 1 :(得分:1)
这可能与保存日期无关,而是与日期的显示有关。日期作为日期存储在数据库中,而不是字符串,因此当您查看日期时,它会在rails转换类型后显示为默认输出格式。
在您看来,您需要使用strftime
或可能使用I18N routines格式化
答案 2 :(得分:1)
jQuery默认给我mm / dd / yyyy。所以在我的控制器中,我使用
解析参数to_date = DateTime.strptime(params["to_date"],'%m/%d/%Y').strftime("%Y-%m-%d")
from_date = DateTime.strptime(params["from_date"], '%m/%d/%Y').strftime("%Y-%m-%d")
这适用于格式化。所有日期格式API均可在ruby-doc处获得。