Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-存储搜索查询/结果_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails-存储搜索查询/结果

Ruby on rails Rails-存储搜索查询/结果,ruby-on-rails,Ruby On Rails,我有一个搜索页面,可以找到候选人。 在此页面中,您可以单击查看以查找有关候选人的更多信息。 在“候选人”视图上,您可以单击“编辑”或执行许多其他操作,这些操作也会返回“候选人”视图 我的问题是,从候选者视图中,我需要添加一个按钮以返回搜索结果。 我最初想用一个JS按钮来处理history-1,但是因为用户可以在视图中执行其他操作,所以这是行不通的 我对rails还是很陌生,所以不确定我的选择。。。我正在考虑对结果进行某种缓存,然后可能是一个隐藏字段来跟踪缓存的位置(不要认为这是最好的解决方案,因

我有一个搜索页面,可以找到候选人。 在此页面中,您可以单击查看以查找有关候选人的更多信息。 在“候选人”视图上,您可以单击“编辑”或执行许多其他操作,这些操作也会返回“候选人”视图

我的问题是,从候选者视图中,我需要添加一个按钮以返回搜索结果。 我最初想用一个JS按钮来处理history-1,但是因为用户可以在视图中执行其他操作,所以这是行不通的

我对rails还是很陌生,所以不确定我的选择。。。我正在考虑对结果进行某种缓存,然后可能是一个隐藏字段来跟踪缓存的位置(不要认为这是最好的解决方案,因为跟踪隐藏值可能会变得有点混乱!)


谢谢,Alex

您可以在子页面中包含查询的参数。例如:
/foo/search?q=stuff
显示搜索结果。每个结果都有一个链接,如
/foo/:id?q=stuff
。在子页面上,可以使用参数链接回主页


此解决方案不使用任何服务器端状态,这通常被认为是构建web应用程序的更好方法。这不仅意味着您的浏览器在书签、多个选项卡等方面将按预期运行,而且还确保可以使用适当的缓存。此外,它还降低了应用程序的复杂性,使调试和扩展更容易。

您可以将搜索结果放入由用户id键入的“搜索结果”表中。然后,当用户点击页面时,始终从该表上的查询加载。

您有两个选项:

按照您的建议,缓存结果。这样做的潜在缺点是需要内存,如果添加了新的有效记录,您将看不到它们。您可以将缓存存储在会话中或数据库中(尽管在后一种情况下,您不会获得太多)

我建议只记住最后一个搜索词,要么在会话中,要么使用隐藏字段。当您转到搜索结果页面时,您最终会重新运行查询,但在索引正确的数据库中,这应该不是什么大问题


祝你好运

我可能会使用会话变量来存储此信息

首先,确保发布到搜索页面的表单是GET操作,这样搜索详细信息就会出现在查询字符串中。然后在搜索操作中,您可以获取请求URL并将其存储在会话中:

session[:search_results] = request.url
现在,在结果视图中,您可以执行如下“返回搜索结果”:

link_to "Back to search results", session[:search_results]

如果有人看到这个页面,你需要一个返回到上一页并仍然显示搜索结果的按钮(就像google chrome按钮),只需使用:back

<%= link_to(image_tag("back.svg"), :back, :class => 'back_btn') %>
'back\u btn')%>

我更喜欢这样,它只有一个缺点:它不允许多个搜索会话…顺便说一句:我更喜欢“session[:last_query]=params”作为后过滤器。它还可以保存post请求。请确保重定向时不执行此操作,仅当控制器实际要显示结果时才存储参数。不,不要尝试在会话中缓存结果。真正地不要!谢谢大家的帮助!我将尝试每一种解决方案。