可以在没有额外请求/响应的情况下完成HTTP重定向吗?

时间:2013-07-04 18:28:18

标签: ruby-on-rails http

我正在编写一个Rails应用程序,其中有两个方法,一个“列表”和一个“查询”。这是一个简化版本:

class ApplicationController < ActionController::Base
    def query
        # query based on user-form text in params[:q]
        @list = Product.where(Product.arel_table[:description].matches("%#{params[:q]}%"))
        if @list.count == 1
          redirect_to :action => 'list', :id => @list[0].id
        end
    end

    def list
        @item= Product.find(params[:id])
    end
 end

到目前为止,最常见的用户模式是输入产生单个产品的搜索。发生这种情况时,我希望网址重定向到宁静的

http://myurl/list/:id

而不是

http://myurl/query?q=search-query. 

但是在上面的代码中,我两次访问数据库以获得相同的记录,并为每个查询创建2个http请求/响应。不是世界末日,但我想知道是否有更好的方法。 (当我运行查询时,我已经掌握了模型对象)

是否有一种干净的方式从查询操作呈现列表操作的视图,并告诉浏览器没有额外请求/响应的新URL?

1 个答案:

答案 0 :(得分:1)

不在http协议的约束范围内。