我正在尝试构建一个高级别的搜索功能。
1 - 我有一个搜索模型,带有search_set操作的控制器和搜索视图/部分来呈现搜索。 2 - 在主页上,serach表单加载了一个空的搜索对象或使用session [:search]初始化的搜索对象(其中包含用户搜索首选项,邮政编码,邻近度,排序顺序,每页等)。此表单有一个post(:put)操作到search_set。
3 - 当注册用户执行设置时,将收集搜索表单的参数并针对该用户保存搜索记录。如果未注册的用户执行搜索,则搜索集操作仅将参数存储在会话[:搜索]中。在任何一种情况下,都会使用给定的参数执行搜索,并显示结果。此时,位置栏中的网址类似于..
http://localhost:3000/searches/search_set?stype=1
此时如果用户只是点击位置栏上的输入,我会收到一条错误,上面写着“没有操作响应显示”我猜是因为URL包含使用put方法的search_set,即使我有一个search_show (:get)动作(只是重新运行会话中的搜索或保存在数据库中)不会被调用。
我如何处理这种情况,我可以将用户点击进入位置栏的路由到get方法?
如果这不能解释问题,请告诉我,我可以分享更多详细信息/代码等。
谢谢!
答案 0 :(得分:0)
我猜想如果你创建自己的路线而不是使用宁静的路线,这不会是一个问题。如果没有看到你所拥有的东西,这可能有所帮助:
map.connect "/searches/", :controller => 'searches', :action => 'show'
虽然搜索(共享/书签网址等)更适合使用,但如果要将搜索保存到服务器,则发布请求是合适的。
我不确定这有什么帮助,但是Thoughtbot发布了一篇关于搜索的好文章:
http://robots.thoughtbot.com/post/159805369/search-by-quacking-like-activerecord