7

私は毎週のイベントが繰り返されるプロジェクトに取り組んでいます。したがって、私はいくつかのDateTimeフィールドを従来とは異なる方法で使用します。私が取り組んでいるのは、平日の選択と時間の選択を出力するフィールドを作成するFormBuilderです。オンラインで見つけた12時間のプラグインを使用しているので、次のように機能します。

class ActionView::Helpers::FormBuilder
  def dow_time(dow,time,options={})
    rval = select(dow, DateTime::DAYNAMES)
    rval += time_select(time, {:minute_step => 15, :ignore_date => false, :twelve_hour => true})
  end
end

私が抱えている問題は、平日の選択には実際にはデフォルトの選択値がないことです。これは私の作成ページでは正常に機能しますが、編集ページでは機能しません。dowは、曜日の文字列が「Monday」、「Tuesday」などである呼び出しモデルのフィールドを参照するシンボルです。dowを使用して呼び出しモデルからその値を引き出すにはどうすればよいですか。

self[dow]

これは別のクラスにあるため、機能しません。

何か案は?何か違います?

4

2 に答える 2

13

FormBuilder内にいる場合は、「object」変数を使用するだけで現在のオブジェクトにアクセスできます。

元:

で:edit.html.erb

<% form_for(@event) do |form| %>
  <%= form.custom_datetime_select(:event_starts_at) %>
<% end %>

FormBuilderで

def custom_datetime_select(field, options = {})
  start_time = object.send(field)
  ...
end

objectとを呼び出すと、とがobject_name設定されますform_for

詳細については、を参照actionpack/lib/action_view/helpers/form_helper.rbしてください。

于 2009-06-01T10:34:37.603 に答える
0

これはあなたのために働くはずです...

class ActionView::Helpers::FormBuilder
  def dow_time(dow_model, time, options={})
    rval = select(dowmodel, :dow, DateTime::DAYNAMES)
    rval += time_select(time, {:minute_step => 15, :ignore_date => false, :twelve_hour => true})
  end
end
于 2009-06-01T04:00:28.107 に答える