我需要在我们的数据库中存储用户搜索查询以跟踪搜索历史记录。我知道 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
答案 0 :(得分:8)
original_fullpath返回一个字符串,其中包含最后请求的路径,包括它们的参数。
fullpath返回String完整路径,包括请求的最后一个URL的参数。
original_fullpath
和fullpath
之间的区别在于,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