Ruby on rails 如何使用页面上的按钮更改页面上显示的记录(RoR)

Ruby on rails 如何使用页面上的按钮更改页面上显示的记录(RoR),ruby-on-rails,model-view-controller,date,Ruby On Rails,Model View Controller,Date,我有一个rails应用程序,可以显示基于员工每日生产的统计数据。当前我的页面显示所有记录 我知道如何显示各种不同的组合,如两个日期之间的记录等。。。但我真正想做的是使单个页面(比如索引页面)有3个控件,允许它在每日统计记录、每周统计记录和统计记录的自定义日期约束(例如从2009年xx月xx日到2010年xx月xx日)之间切换。我已经寻找了一段时间,试图找出这个问题,但我显然错过了一些东西,因为我找不到任何其他遇到同样问题的人 如果这样做太困难,那么我可以看到的另一种最简单的方法是为每个视图创建一

我有一个rails应用程序,可以显示基于员工每日生产的统计数据。当前我的页面显示所有记录

我知道如何显示各种不同的组合,如两个日期之间的记录等。。。但我真正想做的是使单个页面(比如索引页面)有3个控件,允许它在每日统计记录、每周统计记录和统计记录的自定义日期约束(例如从2009年xx月xx日到2010年xx月xx日)之间切换。我已经寻找了一段时间,试图找出这个问题,但我显然错过了一些东西,因为我找不到任何其他遇到同样问题的人

如果这样做太困难,那么我可以看到的另一种最简单的方法是为每个视图创建一个页面,但是仍然存在一个问题,那就是如何设置控件以选择自定义日期约束


我提前提到了我的新手性格,但如果有人能向我解释这一点,我认为这将真正增加我对rails的理解。提前感谢

您的控件可以轻松地将一些信息附加到查询字符串中。与此表单类似:

<form action="" method="get">
  <fieldset>
     <button type="submit" name="show" value="daily">Daily stats</button>
     <button type="submit" name="show" value="weekly">Weekly stats</button>
  </fieldset>
  <fieldset>
     From <input type="text" name="interval-start" value="" /> till
     <input type="text" name="interval-end" value="" />
     <button type="submit" name="show" value="interval">Stats for the specified interval</button>
  </fieldset>
</form>
在您的视图中,只需像往常一样输出
@report
变量



您还可以为该筛选创建一个新路由,可能是
/reports/:name
,并避免使用表单。在这种情况下,您只创建一些指向正确筛选器的链接(
/reports/daily
/reports/weekly
,等等)。在服务器端,您需要检查
reports[:name]
以获得适当的值。

wow,谢谢!我将实施它,并让你知道它是如何进行的!好的,试过了。这正是我想要的。非常感谢你!最后一个问题是,我已经把它放到了我的应用程序中,但是我很难让自定义日期字段正常工作(间隔开始和间隔结束)。你能建议我怎么做吗?你可以构造一个类似于
SELECT*FROM的查询,其中DATE(report\u DATE)>='2010-09-03'和DATE(report\u DATE)
@reports = case params["show"]
    when "daily"
        #Just an example. Use ActiveRecord's query interface or Arel in Rails 3, not plain queries
        Report.find_by_sql "SELECT * FROM reports WHERE DATE(report_date) = DATE(NOW())"
    when "weekly"
        Report.find_by_sql "SELECT * FROM reports WHERE WEEK(report_date) = WEEK(NOW())"
    when "interval"
        Report.find_by_sql "..."
    else
        #Some other possible values, filters, so on
end