date_selectの年月日フィールドを有効・無効化するサンプルスクリプト
もっと1行で書けるような簡単な方法があるはず!!と思うけど、たどり着けなかったので・・・(そもそもdate_selectのようなダサいものは使われていない。ということ?)
スクリプト作成にあたり、ブラウザのソースからidを取得したけど、それもダサい気が...
# 指定したidのdate_selectを有効・無効化する.
date_disable=(date_id, disabled) ->
# 年月日のみ対象.
for i in [1..3]
$("##{date_id}_#{i}i").attr('disabled', disabled)
# checkboxのチェック状態で、date_idのdate_selectを有効無効にする
clicked_date_disable_checkbox=(date_id) ->
check_box_id = "#options_#{date_id}_is_nil"
$(check_box_id).click ->
date_disable "model_#{date_id}", $(@).prop('checked')
$ ->
date_ids = ['distribute_begin_date', 'distribute_end_date']
clicked_date_disable_checkbox(date_id) for date_id in date_ids
# model/_form.html.slim
.field
= f.label :distribute_begin_date
= f.date_select :distribute_begin_date
= f.label 'distribute_begin_date_is_nil'
= check_box 'options', 'distribute_begin_date_is_nil', {}, true, false
.field
= f.label :distribute_end_date
= f.date_select :distribute_end_date
= f.label 'distribute_end_date_is_nil'
= check_box 'options', 'distribute_end_date_is_nil', {}, true, false