0

我有一个表格,可以在数据库中创建一个新条目。其中一个字段使用 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'});
});

提前致谢!

4

3 回答 3

4

您可以通过在 config/initializers 中创建 date_formats.rb 并添加以下行来快速设置日期的通用默认格式,而不是使用 strftime:

Date::DATE_FORMATS[:default] = "%m-%d-%Y"
于 2013-03-15T21:19:11.467 回答
1

这可能与日期的保存无关,而是与日期的显示有关。日期在数据库中存储为日期,而不是字符串,因此当您查看日期时,它会显示为 rails 转换类型后的默认输出格式。

在您看来,您需要使用strftime或可能使用I18N 例程对其进行格式化

于 2012-07-24T14:18:32.567 回答
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获得。

于 2013-07-15T12:04:41.510 回答