如何保留远程响应返回的数据?

时间:2015-09-26 18:47:20

标签: ruby-on-rails browser-cache

我目前正在构建一个应用查询Indeed API以发布招聘信息的应用。用户可以成功查询并获得响应。但是,如果数据查看作业发布,然后按浏览器上的后退按钮,则数据不会保留。如何缓存JS响应,以便用户无需再次搜索即可查看其结果?我想我会做某种缓存,但我不知道从哪里开始。我知道有一个视图辅助方法'缓存',但我认为这不是我想要的。

作业/ index.html.haml

...snippet...

   .job-search-form
    = form_tag(jobs_search_path, method: "post", remote: true, id: 'job-search') do
      .row
        .col-md-6.job-search-keywords
          = text_field_tag :q,
                           nil,
                           :class => 'form-control job-query'

          = label_tag 'q', 'keywords or company'

          .jobs-by-indeed
            = link_to "Jobs", "http://www.indeed.com", tabindex: '-1'
            by
            = image_tag 'jobsearch.gif'

        .col-md-4.job-search-location
          = text_field_tag :l,
                           nil,
                           :class => 'form-control job-location'

          = label_tag 'l', 'city, state or zip code'

        .col-md-2
          #search-submission= submit_tag "Search", class: 'form-control', data: { disable_with: "Searching..." }

jobs_controller.rb#搜索

  def search
    @jobs = @client.search(search_params)

    respond_to do |format|
      format.js
    end
  end

作业/ search.js.erb

$('.job-search-results').html("<%= j render 'search_results', locals: @jobs %>");

下面是一个动画gif,显示从作业发布返回后的空白页面。提前感谢您的帮助。

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您想在客户端进行缓存,可以在js中使用它

localStorage.setItem("key",data); 

答案 1 :(得分:0)

稍微讨论了一下之后,我发现我正在做的事情并不是HTTP标准所支持的。当我应该使用get方法时,我正在使用post方法触发搜索。我觉得这个解决方案是一个有效的正确答案,因为它遵守HTTP标准,并且在没有实现某种前端框架的情况下似乎是最可靠的解决方案。

作业/ index.html.haml

...snippet...

   .job-search-form
    = form_tag(jobs_search_path, method: :get, remote: true, id: 'job-search') do
      .row
        .col-md-6.job-search-keywords
          = text_field_tag :q,
                           nil,
                           :class => 'form-control job-query'

          = label_tag 'q', 'keywords or company'

          .jobs-by-indeed
            = link_to "Jobs", "http://www.indeed.com", tabindex: '-1'
            by
            = image_tag 'jobsearch.gif'

        .col-md-4.job-search-location
          = text_field_tag :l,
                           nil,
                           :class => 'form-control job-location'

          = label_tag 'l', 'city, state or zip code'

        .col-md-2
          #search-submission= submit_tag "Search", class: 'form-control', data: { disable_with: "Searching..." }

jobs/search.js.erb重命名为jobs/index.js.erb