0

データベースに新しいエントリを作成するフォームがあります。フィールドの 1 つは 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

strftime を使用する代わりに、config/initializers で date_formats.rb を作成し、次の行を追加することで、日付の普遍的なデフォルト形式をすばやく設定できます。

Date::DATE_FORMATS[:default] = "%m-%d-%Y"
于 2013-03-15T21:19:11.467 に答える
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 に答える
1

これはおそらく日付の保存とは関係なく、日付の表示に関係しています。日付は文字列ではなく日付としてデータベースに保存されるため、日付を表示すると、レールが型を変換した後のデフォルトの出力形式として表示されます。

あなたの見解では、I18Nルーチンstrftimeでフォーマットするか、おそらく使用する必要があります

于 2012-07-24T14:18:32.567 に答える