Rails - 设置用户定义的本地人......有可能吗?

时间:2013-03-27 11:27:09

标签: ruby-on-rails

在我的rails应用程序中,我设置了一个标签,用于加载部分特定时间段内的统计信息,即:

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

以上内容会加载“月”标签。

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

3 个答案:

答案 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") } %>

会的。