在我的 rails 应用程序中,我设置了选项卡,这些选项卡将加载部分特定时间段的统计信息,即:
<%= render 'shared/user_reports' :locals => { :start_date => Date.today - 30, :end_date => Date.today } %>
以上将加载“月份”选项卡。
我的问题是,有没有办法让用户定义的日期传递给:start_date
和:end_date
本地人(而不在数据库中存储信息)?
在我的 rails 应用程序中,我设置了选项卡,这些选项卡将加载部分特定时间段的统计信息,即:
<%= render 'shared/user_reports' :locals => { :start_date => Date.today - 30, :end_date => Date.today } %>
以上将加载“月份”选项卡。
我的问题是,有没有办法让用户定义的日期传递给:start_date
和:end_date
本地人(而不在数据库中存储信息)?
您可以使用 URL 参数来临时存储数据。
使用以下命令读取参数:
params[:param_name]
如果您想从这样的网址呈现您的标签/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 } %>
您可以使用 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") } %>
会做。