0

我正在创建一个月度报告,要求用户输入一个月,然后显示该月的报告。我有以下内容来获取月份:

= simple_form_for @month, html: { :class => 'form-inline' } do |f|
= f.input :month, label: 'Report Month', collection: month_select, input_html: {class: 'span2'}

我只是将月份设置为 @month = ' '

月份不在我的数据库中,但我确实有过滤器编码以根据日期字段按月份过滤数据库。我只希望用户能够选择月份并查看结果。现在选择不会保留在 @month 变量中。我想我要么需要在我的控制器中实现一个方法来重新提交我在当月过滤的表单,要么使用 javascript 。我也不知道怎么办

如何设置表单以允许输入日期,然后显示该日期的报告?

4

1 回答 1

1

好的,让我们假设您正在列出我们的 Invoice 模型的结果 --- 并且您希望按月过滤。

= form_tag url: invoices_path do
  = select_tag :month, month_select, prompt: true
  = submit_tag "Filter"

然后在您的 invoices_controller.rb 中:

def index
  @invoices = Invoice.by_month(params[:month])
end

在您的 invoice.rb 模型中:

def self.by_month(selected_month=nil)
  if month
    where(month: selected_month)
  else
    scoped
  end
end
于 2013-05-28T14:09:20.730 回答