如何在轨道中显示所有日历日期,选择年份下拉列表和选定月份下拉列表?

时间:2015-05-29 09:51:16

标签: ruby-on-rails calendar format

我有两个下拉列表,一个是年度下拉列表,显示当前年度和当前年份的2年。我有几个月下降,显示所有12个月。我希望以这种格式("星期二,2015年5月1日和#34;)显示用户选择的月份下拉列表和所选年份下拉列表中的所有日历日期,从1日到31日。

我怎么能在rails中做到这一点?

2 个答案:

答案 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来实现

html文件

<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

_get_dates.html.erb

<%= select_tag "date", @x) %>

请勿在路线中定义get_dates操作。

注意:此代码可能无法通过复制粘贴工作,您将需要对其进行必要的编辑。