在我的rails应用程序中,我设置了一个标签,用于加载部分特定时间段内的统计信息,即:
<%= render 'shared/user_reports' :locals => { :start_date => Date.today - 30, :end_date => Date.today } %>
以上内容会加载“月”标签。
我的问题是,有没有办法让用户定义的日期传递给:start_date
和:end_date
本地人(不在数据库中存储信息)?
答案 0 :(得分:2)
您可以使用网址参数临时存储数据。
使用以下方式阅读参数:
params[:param_name]
答案 1 :(得分: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)
} %>
但是最好在控制器中处理params:
@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 } %>
答案 2 :(得分: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") } %>
会的。