我正在研究涉及日期范围的一些功能。在页面上,它是具有一些日期的用户列表,以及start_date和end_date的表单。在页面上,我想要将一个查询添加到URL,以便用户不必点击表单上的搜索按钮,结果将加载到页面上。
因此,例如,用户访问该页面,并且该URL看起来像
http://localhost:3000/user_and_project?at_start=2016-02-26&at_end=2016-03-10&commit=Search
,结果就像用户点击按钮本身一样。
我发现了一些可以工作的东西,但没有做到。目前,已经有了解决方案
params[:at_start] ||= at_start_helper #method name
params[:at_end] ||= at_end_helper #method name
# or
@date_range = { at_start: at_start_helper, at_end: at_end_helper}
# or
params[:at_start] = at_start_helper
params[:at_end] = at_end_helper
但实际上并没有将它添加到网址中,也没有做任何事情。有谁知道我怎么能做到这一点?
答案 0 :(得分:1)
我似乎无法弄清楚如何执行此操作,因此我提出的解决方案是创建一个自定义somedomain.com/user-hours
,然后重定向到前面提到的查询字符串准备好的页面
def user_and_project
# original method
end
def user_hours
redirect_to(controller: 'controller_name', action: 'user_and_project', at_start: at_start_helper, at_end: at_end_helper)
end
# routes
get '/user-hours' => 'controller#action'
答案 1 :(得分:0)
如果我理解你,你需要提供这样的路径:
project_path(:at_start=>"2016-02-26", :at_end => "2016-03-26")
答案 2 :(得分:0)
尝试将这些参数放在链接标记中,因此它也会显示在浏览器网址上。然后,您可以将参数用作表单字段的默认值。
像:
<a href="<%= my_path(:at_start=>"2016-02-26", :at_end => "2016-03-26") %>" >Test</a>