17

私は自分のアプリケーションにいくつかのフォームを持っていて、それを使用していて、(HTML5 フォーム要素を使用する) 使用date_selectに変更したばかりです。私が抱えている唯一の問題は、デフォルトで今日の日付になることです。代わりは。date_fielddate_selectdate_fielddd/mm/yyyy

人々がやみくもにフォームを送信し、検証エラーを引き起こすという問題に直面しています。

date_field今日をデフォルトにすることは可能ですか?

4

8 に答える 8

3

これは正しく実行されます:

<%= f.date_field :birthday, :value => Time.now.strftime("%Y-%m-%d")  %>
于 2014-01-10T11:09:05.807 に答える
3

これらの回答の多くが示唆するように、:value を設定すると、編集中のレコードに渡された値が上書きされます。フォームが新規エントリのみの場合は問題ありませんが、フォーム内のレコードを編集する場合はバグがあります。これを回避する 1 つの方法は、Michael が示唆するように、既存のオブジェクトを明示的に取得することです。

私が現在使用しているソリューションはコントローラーにあります。コントローラーは、新しいレコードを作成するときに値を今日に設定します。モデルが Person で、デフォルトにする値が start_date であると仮定します。

def new
    @person = Person.new(start_date: Date.current)
end

その後、追加の手間をかけずにフォームで値を使用できます。

f.date_field :start_date
于 2016-11-02T15:01:31.137 に答える
0

日付フィールドに Time オブジェクトを使用してもうまくいきませんでした。Date オブジェクトを使用する必要がありました。

  1. Safari などのブラウザーのプレースホルダーを使用して、テキスト フィールドとしてレンダリングされている場合に適切な書式設定に誘導しました。
  2. また、値がすでに存在する場合 (#edit アクションの場合など)、代わりにその値を使用する必要があります。

Rails 4 の結果のビュー コード:

<%= f.date_field :birthday, placeholder: "YYYY-MM-DD", value: (f.object.birthday || Date.today.to_s(:db)) %>
于 2015-04-09T14:14:16.423 に答える