2

在我的 rails 应用程序中,我设置了选项卡,这些选项卡将加载部分特定时间段的统计信息,即:

<%= render 'shared/user_reports' :locals => { :start_date => Date.today - 30, :end_date => Date.today } %>

以上将加载“月份”选项卡。

我的问题是,有没有办法让用户定义的日期传递给:start_date:end_date本地人(而不在数据库中存储信息)?

4

3 回答 3

2

您可以使用 URL 参数来临时存储数据。

使用以下命令读取参数:

params[:param_name]
于 2013-03-27T11:34:53.883 回答
2

如果您想从这样的网址呈现您的标签/my_path?start_date=2013-02-27&end_date=2013-03-27

<%= render 'shared/user_reports' :locals => { 
     :start_date => (Date.parse(params[:start_date]) rescue Date.today - 1.month),
     :end_date => (Date.parse(params[:end_date]) rescue Date.today) 
} %>

但最好在控制器中处理参数:

@start_date = Date.parse(params[:start_date]) rescue Date.today - 1.month
@end_date = Date.parse(params[:end_date]) rescue Date.today

在你看来:

<%= render 'shared/user_reports' :locals => { :start_date => @start_date, :end_date => @end_date } %>
于 2013-03-27T12:43:09.297 回答
1

您可以使用 Date.parse 从字符串中解析日期。

  1.9.3p327 :004 > start_date = Date.parse("march 27 2013")
  => Wed, 27 Mar 2013

所以,

<%= render 'shared/user_reports' :locals => { :start_date => Date.parse("Feb 27 2013"), :end_date => Date.parse("March 27 2013") } %>

会做。

于 2013-03-27T11:50:43.333 回答