2010-06-07 88 views
-1

我正在尝试构建一个搜索功能,它在高层次上可以像这样工作。rails route问题

1 - 我有一个搜索模型,带有search_set操作的控制器和用于呈现搜索的搜索视图/部分。 2 - 在主页上,serach表单加载了一个空的搜索对象或一个使用session [:search](包含用户搜索首选项,邮政编码,接近度,排序顺序,每页等)初始化的搜索对象。此表单对search_set有一个post(:put)操作。

3 - 当注册用户执行一组搜索表单时,会收集搜索表单的参数,并针对该用户保存搜索记录。如果未注册用户执行搜索,则搜索集操作只是将参数存储在会话[:搜索]中。无论哪种情况,都会使用给定的参数执行搜索,并显示结果。此时,在地址栏中的URL是一样的东西..

http://localhost:3000/searches/search_set?stype=1

此时如果用户只需点击地址栏上输入,我得到一个错误,指出这一点“不采取行动回应展示“我猜测是因为URL包含使用put方法的search_set,即使我有一个search_show(:get)操作(它简单地重新运行会话中的搜索或保存在数据库中)也不会被调用。

我该如何处理这种情况,我可以将用户点击进入地址栏的路由路由到get方法?

如果这并不能说明问题,请让我知道我可以分享更多的细节/代码等

谢谢!

回答

0

我想如果你创建自己的路线,而不是使用宁静的路线,这不会是一个问题。没有看到你正是这可能帮助什么:

map.connect "/searches/", :controller => 'searches', :action => 'show' 

虽然得到优选用于搜索(共享/书签的网址等),如果要保存的搜索到服务器的post请求是适当的。

我不知道这会有所帮助,但Thoughtbot贴出了一大篇有关搜索而回:

http://robots.thoughtbot.com/post/159805369/search-by-quacking-like-activerecord