1

文字列として保存するドロップダウン時間を選択したいのですが、次の例外が発生し続けます:マルチパラメータ属性の割り当てで1つのエラー。これが私が書いたコードです:

<%= f.time_select :appointment_time, :minute_step => 5, :ignore_date => true %>

フォームを送信すると、paramsハッシュに次の値が表示されます

"appointment_time(4i)"=>"12", "appointment_time(5i)"=>"00" 

これらの2つの値を簡単に取得して、結果を「12:00:00」として保存する方法はありますか?

4

2 に答える 2

2

params ハッシュに予定キー以上のものがあると仮定します。

params[:your_model].select {|k,v| k =~ /^appointment_time/ }.
  sort.map {|f| f.last.to_s }.join(':')

もちろん、これは、テーブルの予定時刻フィールドが DateTime または Date フィールドではないことも前提としています。(想定される) ActiveRecord モデル インスタンスの属性を更新する前に、これを行う必要があります。これを行うにはもっと簡単な方法がありますが、コードとバックトレースを見ないと、それらが機能するかどうかを判断するのは困難です。

編集

processed = params.dup
processed[:your_model][:appointment_time] = params[:your_model].
  select {|k,v| k =~ /^appointment_time/ }.sort.map {|f| f.last.to_s}.join(':')
@model.update_params(processed[:your_model])

それはおそらくあなたが探しているものの線に沿っています。

于 2012-05-18T22:45:29.990 に答える
0

時間の値ごとに異なる列を文字列として作成し、作成後にすべてを結合することで問題を解決しました。これは最も洗練されたソリューションではありませんが、私のアプリケーションでは機能します

于 2012-05-22T20:12:18.170 に答える