基本的には、次のように、date_helperをデフォルトの日付にすることはできません。
- semantic_form_for resource do |f|
- f.inputs do
= f.input :issued_on, :default => Date.today
= f.buttons
上記は、リソースに日付がない場合に空白の列をレンダリングするだけです。
私が間違っている可能性があることについてのポインタをいただければ幸いです。
基本的には、次のように、date_helperをデフォルトの日付にすることはできません。
- semantic_form_for resource do |f|
- f.inputs do
= f.input :issued_on, :default => Date.today
= f.buttons
上記は、リソースに日付がない場合に空白の列をレンダリングするだけです。
私が間違っている可能性があることについてのポインタをいただければ幸いです。
コントローラのオブジェクト自体にデフォルトを設定できます
def edit
@resource = Resource.find(params[:id])
@resource.issued_on ||= Date.today
end
モデルでafter_initializeを定義する必要があります。after_initializeメソッドがモデルで定義されている場合、モデルのインスタンスを生成するnew、create、find、およびその他のメソッドへのコールバックとして呼び出されます。
理想的には、次のように定義する必要があります。
class resource < ActiveRecord::Base
def after_initialize
@issued_on ||= Date.today
end
...
end
次に、ビューは次のようになります。
- semantic_form_for resource do |f|
- f.inputs do
= f.input :issued_on
= f.buttons
これにより、これらのフィールドが設定されていないレコードが見つかった場合にも、nilエラーが防止されます。ただし、ActiveRecordを使用せずに直接レコードを作成しない限り、これは発生しないはずです。
最近、Formtasticのすべての:select、:radio、および:check_boxes入力に対して:selectedオプションを実装したため、次のパッチリリース(0.9.5)または1.0に含まれる予定です。それまでは、after_initializeを作成するか、コントローラーでデフォルトを設定することをお勧めしますが、デフォルト値を決定するのに最適なのは、コントローラーやモデルに慣れていないデザイナーである場合もあると思います。これが、FormtasticDSLの一部として追加した理由です。
モデルファイルに以下を入れることができます
def after_initialize
self.start ||= Date.today
self.token ||= SecureRandom.hex(4)
self.active ||= true
end
上記発行
@issued_on ||= Date.today
私のために働いていません
私は次のように好きです
after_initialize :set_issued_on
def set_issued_on
@issued_on||=Date.today
end
少し長いですが、素晴らしく明確です