0

ワークアウト スケジューラ用にフォームをセットアップしました。私は show_date を使用してユーザーフレンドリーな方法で日付をフォーマットし、実際の日付フィールドを使用してレールに適した日付を格納しています。ページを見ると、show_date フィールドに何も表示されませんが、日付はまだ期待どおりに機能しています。

#workout.rb
class Workout < ActiveRecord::Base
  validates_presence_of :name
  validates_presence_of :show_date
  validates_presence_of :time

  attr_accessor :show_date
end

#_form.html.erb
<%= simple_form_for @workout, :html => { :class => 'form-horizontal' } do |f| %>
  <%= f.input :name %>
  <%= f.input :date, :as => :hidden%>
  <%= f.input :show_date, :as => :date_picker, :label => 'Date', :input_html => { :value => @workout.date } %>
    <%= f.input :time, :minute_step => 15 %>
    <div class="form-actions">
    <%= f.button :submit, :class => 'btn-primary' %>
    <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
                workouts_path, :class => 'btn' %>
  </div>
<% end %>

#date_picker_input.rb
class DatePickerInput < SimpleForm::Inputs::Base
  def input
    @builder.text_field(attribute_name, :class => 'date_picker')
  end    
end

#datepicker.js
$("input.date_picker").datepicker(
    {
        dateFormat: "mm/dd/yy",
        altField: "#workout_date",
        altFormat: "dd/mm/yy"
    }
);
4

1 に答える 1

2

他の方が見やすいように、コメントではなくこちらに載せておきます。

日付フィールドには既に日付オブジェクトがあります。必要なのは、ユーザーへの表示方法を変更し、メソッドを使用する必要があることだけです。

show_date を、strftime を使用して表示する日付を適切にフォーマットするメソッドに変更します。date.strftime("%m/%d/%Y") は、月/日/年全体、つまり "05/01/2012" にフォーマットされた文字列を提供します。 http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftimeには、さまざまな書式設定文字列に関するドキュメントがあります。

def show_date
  date.strftime("%m/%d/%Y")
end
于 2012-05-01T16:36:01.980 に答える