私は自分のアプリケーションにいくつかのフォームを持っていて、それを使用していて、(HTML5 フォーム要素を使用する) 使用date_select
に変更したばかりです。私が抱えている唯一の問題は、デフォルトで今日の日付になることです。代わりは。date_field
date_select
date_field
dd/mm/yyyy
人々がやみくもにフォームを送信し、検証エラーを引き起こすという問題に直面しています。
date_field
今日をデフォルトにすることは可能ですか?
私は自分のアプリケーションにいくつかのフォームを持っていて、それを使用していて、(HTML5 フォーム要素を使用する) 使用date_select
に変更したばかりです。私が抱えている唯一の問題は、デフォルトで今日の日付になることです。代わりは。date_field
date_select
date_field
dd/mm/yyyy
人々がやみくもにフォームを送信し、検証エラーを引き起こすという問題に直面しています。
date_field
今日をデフォルトにすることは可能ですか?
これは正しく実行されます:
<%= f.date_field :birthday, :value => Time.now.strftime("%Y-%m-%d") %>
これらの回答の多くが示唆するように、:value を設定すると、編集中のレコードに渡された値が上書きされます。フォームが新規エントリのみの場合は問題ありませんが、フォーム内のレコードを編集する場合はバグがあります。これを回避する 1 つの方法は、Michael が示唆するように、既存のオブジェクトを明示的に取得することです。
私が現在使用しているソリューションはコントローラーにあります。コントローラーは、新しいレコードを作成するときに値を今日に設定します。モデルが Person で、デフォルトにする値が start_date であると仮定します。
def new
@person = Person.new(start_date: Date.current)
end
その後、追加の手間をかけずにフォームで値を使用できます。
f.date_field :start_date
日付フィールドに Time オブジェクトを使用してもうまくいきませんでした。Date オブジェクトを使用する必要がありました。
Rails 4 の結果のビュー コード:
<%= f.date_field :birthday, placeholder: "YYYY-MM-DD", value: (f.object.birthday || Date.today.to_s(:db)) %>