在页面加载时将查询字符串添加到params - Rails

时间:2016-03-01 00:35:28

标签: ruby-on-rails

我正在研究涉及日期范围的一些功能。在页面上,它是具有一些日期的用户列表,以及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

但实际上并没有将它添加到网址中,也没有做任何事情。有谁知道我怎么能做到这一点?

3 个答案:

答案 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>