4

基本的には、次のように、date_helperをデフォルトの日付にすることはできません。

- semantic_form_for resource do |f|
  - f.inputs do
    = f.input :issued_on, :default => Date.today
  = f.buttons

上記は、リソースに日付がない場合に空白の列をレンダリングするだけです。

私が間違っている可能性があることについてのポインタをいただければ幸いです。

4

5 に答える 5

7

コントローラのオブジェクト自体にデフォルトを設定できます

def edit
  @resource = Resource.find(params[:id])
  @resource.issued_on ||= Date.today
end
于 2009-11-11T15:21:27.893 に答える
2

モデルで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を使用せずに直接レコードを作成しない限り、これは発生しないはずです。

于 2009-11-11T17:24:13.530 に答える
2

最近、Formtasticのすべての:select、:radio、および:check_boxes入力に対して:selectedオプションを実装したため、次のパッチリリース(0.9.5)または1.0に含まれる予定です。それまでは、after_initializeを作成するか、コントローラーでデフォルトを設定することをお勧めしますが、デフォルト値を決定するのに最適なのは、コントローラーやモデルに慣れていないデザイナーである場合もあると思います。これが、FormtasticDSLの一部として追加した理由です。

于 2009-12-01T10:49:09.637 に答える
0

モデルファイルに以下を入れることができます

def after_initialize
    self.start ||= Date.today
    self.token ||= SecureRandom.hex(4)
    self.active ||= true
end

上記発行

@issued_on ||= Date.today

私のために働いていません

于 2011-02-09T09:35:20.547 に答える
0

私は次のように好きです

after_initialize :set_issued_on

def set_issued_on
  @issued_on||=Date.today
end

少し長いですが、素晴らしく明確です

于 2011-09-07T14:39:44.533 に答える