2006年08月07日(Mon) 事務シゴトがいっぱいでんがな [長年日記]
● [Rails] ルーティングから得るパラメータとフォームから得るパラメータ
ある日の予定を変更するのに、yyyy/mm/ddのURLから得られた日付と、HTMLのフォームからPOSTされた日付と2組のパラメータが来ることがある。他の場面ではフォームから日付が来ることがないので、URLから得られた日付に基づいて動作させていたが、データベースを更新する時だけはフォームからPOSTされた日付を優先させたい。
URLから得られたパラメータはparams[:year]などに入っているのに対して、フォームから得られたパラメータはparams[:モデル名][:date(1i)]などに入っている。
action_view/helpers/date_helper.rbのto_date_select_tagの定義の267行目付近
を見ると、date(1i)、date(2i)、date(3i)が、それぞれ年、月、日に対応すると仮定してしまって良さそうなので、app/controllers/application.rbに下記のようなコードを置いておいてアクションから呼び、URLから得られるパラメータをフォームからPOSTされたパラメータで上書きするようにしてみた。
overrideには、アクションに必要なら、params[:モデル名]を代入する。
● いや、もちはいいからシゴトをしろ。
最近のツッコまれどころ