【发布时间】:2017-06-21 01:30:05
【问题描述】:
我尝试为 API 调用存储一个查询字符串,以便在接下来的 30 或 60 个或更多结果中再次使用它。当我在 Rails 中使用缓存时,查询会在 Internet 中的不同计算机之间传递。那不是我想做的。它应该只适用于一个用户,然后这个未登录的用户可以通过链接获得下一个结果。
所以我尝试了 javascript,而不是从文本字段中获取输入,然后将其存储在 sessionStorage 中。它工作一次,然后我不知道如何再次更改该 sessionStorage。
代码如下。任何想法如何在 Rails 中正确存储查询字符串以供下一个 api 调用?
模型 1
def self.search_results(search_term_web, params_web)
Rails.cache.write 'searchterm', search_term_web
results = good.search(search_term_web)
end
模型 2
def self.search_results_again(params_web)
results = good.search(Rails.cache.write 'searchterm')
end
控制器
def search
if params[:q]
@params_web = {:count =>30, :offset => 0}
params[:bing] = @params_web
@q = User.search_results(params[:q], params[:good])
if @q
# render json: @q
render partial: "cognitives/q"
else
render status: :not_found, nothing: true
end
end
end
def search30
if Rails.cache.read 'searchterm'
@params_web = {:count =>30, :offset => 30}
params[:bing] = @params_web
@q = User.search_results_again(params[:good])
if @q
# render json: @q
render partial: "cognitives/q"
else
render status: :not_found, nothing: true
end
end
end
另一种使用 Javascript 的方法
var addsearchterm = function (){
localStorage.begriff = document.getElementById('web- text').value;
document.getElementById('begriff').innerHTML = localStorage.begriff;
};
addsearchterm();
【问题讨论】:
标签: javascript ruby-on-rails caching session-storage