2011-06-28 14 views
0

HH:MMを2つの選択ボックスとして1時間ごとに表示し、分単位で表示する必要があります。時間を最大4:00までに制限してください。 'duration'(列型:整数)はデータベースに分として格納されます。 私はformtasticを使用しています。In Rails/Formtastic時間入力フィールドで時間を制限するには

時間を入力すると、出力フォーマットをHH:MMとしてドロップダウンすることができます。

「%= f.input:期間::ラベル=>「期間」:as =>:時間、:minute_step => 15、:ヒント=>「時間で測定」:end => 10 %> "

選択した時間を制限するにはどうすればいいですか?(01、02、03、04のみを数時間ドロップダウン表示する必要があります)?

Rails/Formtasticに指定するオプションがある場合はお知らせください。または、このシナリオを処理するためのよりよい方法はありますか?

答えて

1

私はFormtasticで制限するオプションはありません。入力を選択として表示し、明示的に必要なオプションを渡すことができます。

before_save :set_duration 

def set_duration 
    self.duration = @hours * 60 + @minutes 
end 

def hours 
    self.duration/60; 
end 

def minutes 
    self.duration % 60; 
end 

def hours=(h) 
    @hours = h 
end 

def minutes=(m) 
@minutes = m 
end 

def duration=(d) 
    @hours = d/60 
    @minutes = d % 60 
    self.set_duration 
end 

そして、あなたはそれらをよりオリジナルに見えるように取得するthis answerで見たいと思うかもしれません:

<%= f.input :hours, :as=>:select, :collection => (0..4) %> 
<%= f.input :minutes, :as=>:select, :collection => [0,15,30,45] %> 

は、あなたはおそらくモデルでこれらの仮想属性を追加する必要があります。

これを行うには巧妙で速い方法があるかもしれませんが、これが最初に思い浮かぶのです。

+0

ありがとうございました。私は2つの選択ボックスとして、1時間に1つと、分に1つのボックスを表示したいと思います。 – naren

+0

ああ、それを逃した。私の答えを編集しました。 – Luke

+0

これが毎回動作するかどうかわかりません。たとえば、分setterが時間設定後に呼び出された場合、間違った情報がduraionに格納されます。 – naren

関連する問題