我有两个下拉列表,一个是年度下拉列表,显示当前年度和当前年份的2年。我有几个月下降,显示所有12个月。我希望以这种格式("星期二,2015年5月1日和#34;)显示用户选择的月份下拉列表和所选年份下拉列表中的所有日历日期,从1日到31日。
我怎么能在rails中做到这一点?
答案 0 :(得分:1)
<div class="month"><%= select_month(Date.today, prompt: 'Choose month') %></div>
<div class="year"><%= select_year(Date.today, :start_year => Date.today.year, :end_year => 3.years.from_now.year, prompt: 'Choose year') %></div>
<script>
$(".date").hide();
$('.date', '.month').change(function(e){
var month = $('.month').val();
var year = $('.year').val();
$.ajax({
type: "POST",
url: "<controller>/get_dates",
data: { month: month, year: year},
success: function( data ) {
(".date").val(data);
}
});
});
</script>
HTML文件
控制器
def get_dates
params[:month] ||= Time.now.month
params[:year] ||= Time.now.year
@dates = Time.days_in_month(params[:month].to_i, params[:year].to_i)
end
答案 1 :(得分:0)
更好的方法是使用日期选择器
或者
x = Date.today.beginning_of_year..Date.today.end_of_year
=> Thu, 01 Jan 2015..Thu, 31 Dec 2015
然后在下拉列表中使用此x.to_a
。
编辑:
更好的方法仍然是使用日期选择器。
否则你可以通过以下方式使用AJAX来实现
<script>
$('#month_drop_down', '#year_drop_down').change(function(e){
var month = $('#month_drop_down').val();
var year = $('#year_drop_down').val();
$.ajax({
type: "POST",
url: "<controller>/get_dates",
data: { month: month, year: year},
dataType:'json',
async:false,
success: function( data ) {
("#date_div").html(data);
}
});
});
</script>
<div>
<div style="float:left;" id="date_div"><%= select_tag "date", [[1,1][2,2]....]) %>`
<div style="float:left;" id="month_div"><%= select_tag "month_drop_down", [[1,1][2,2]....]) %>
<div style="float:left;" id="year_div"><%= select_tag "year_drop_down", [[1,1][2,2]....]) %>
</div>
def get_dates
@x = Date.today.beginning_of_year..Date.today.end_of_year
render :partial 'get_dates'
end
<%= select_tag "date", @x) %>
请勿在路线中定义get_dates操作。
注意:此代码可能无法通过复制粘贴工作,您将需要对其进行必要的编辑。