Rails 4 - request.original_fullpath和request.fullpath之间有什么区别

时间:2015-12-02 02:42:50

标签: ruby-on-rails ruby-on-rails-4 uri query-string

我需要在我们的数据库中存储用户搜索查询以跟踪搜索历史记录。我知道 request.original_url 会将查询字符串作为绝对网址。

http://www.example.com/search?utf8=%E2%9C%93&keywords=cars&view=grid

我更喜欢存储相对url路径。话虽如此,对于所有参数的相对网址, request.original_fullpath request.fullpath 之间有什么区别?他们似乎是一回事?

request.original_fullpath

/search?utf8=%E2%9C%93&keywords=cars&view=grid

request.fullpath

/search?utf8=%E2%9C%93&keywords=cars&view=grid

2 个答案:

答案 0 :(得分:8)

original_fullpath返回一个字符串,其中包含最后请求的路径,包括它们的参数。

fullpath返回String完整路径,包括请求的最后一个URL的参数。

original_fullpathfullpath之间的区别在于,original_fullpath方法不包含原始网址中不存在的参数(即通过POST而不是GET发送的参数)。

答案 1 :(得分:1)

我想添加original_fullpath忽略重定向,而fullpath包括重定向,例如:

# some_spec.rb
describe 'collections' do
  before do
    get '/collections'
  end
  context 'user is not signed in' do
    it 'should redirect to /unauthenticated' do
      expect(request.original_fullpath).to eq '/collections'
      expect(request.fullpath).to eq '/unauthenticated'
    end
  end
end