月份的較高一天,我有一個簡單的datetime屬性挑這樣的日期的意見date_select節省可用
= f.date_select :period_end_at, default: { day: 31 }
它默認爲每月的例子的最後一天。問題是,如果選擇的月份是「六月」,有30天,因爲六月份沒有「31」天,它將保存爲第1天而不是第30天。
是否有一種簡單的方法如果所提供的價值高於所有可用月份,總是保存到月份的最高日?
月份的較高一天,我有一個簡單的datetime屬性挑這樣的日期的意見date_select節省可用
= f.date_select :period_end_at, default: { day: 31 }
它默認爲每月的例子的最後一天。問題是,如果選擇的月份是「六月」,有30天,因爲六月份沒有「31」天,它將保存爲第1天而不是第30天。
是否有一種簡單的方法如果所提供的價值高於所有可用月份,總是保存到月份的最高日?
不知道是否可以縮短,但這應該工作(如果我理解正確你的問題):
= f.date_select :period_end_at, default: { day: Time.days_in_month(Time.now.month) }
看看這個js snippet,它很適合我使用Rails 4.2.0
<script>
$(function(){
railsMonthDates();
$("select[id*=_2i], select[id*=_1i]").change(railsMonthDates);
});
function railsMonthDates() {
$("select[id*=_2i]").each(function(){
$monthSelect = $(this);
$daySelect = $(this).siblings("select[id*=_3i]");
$yearSelect = $(this).siblings("select[id*=_1i]");
var year = parseInt($yearSelect.val());
var month = parseInt($monthSelect.val());
var days = new Date(year, month, 0).getDate();
var selectedDay = $daySelect.val()
$daySelect.html('');
for(var i=1; i<=days; i++) {
$daySelect.append('<option value="'+i+'">'+i+'</option>');
}
$daySelect.val(selectedDay);
});
}
</script>
只需將其粘貼到具有表格的部分即可。 注意,它匹配每個有id*=_1i
,id*=_2i
或id*=_3i
的元素,所以如果你有更多的f.date_select
你需要指定一個更好的匹配器。
但是這段代碼假設我們總是在當前月份。 date_select月份值可以在任何月份。 – Martin
對不起,錯過了這部分的問題。 –