Ruby on Rails:日期选择器不保存格式

时间:2012-07-24 12:45:28

标签: jquery ruby-on-rails ruby datepicker format

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

提前致谢!

3 个答案:

答案 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处获得。