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

How do I persist data returned by a remote response?

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

jobs/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#search

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

    respond_to do |format|
      format.js
    end
  end

jobs/search.js.erb

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

下面是一个 gif 动画,显示从职位发布返回后的空白页面。在此先感谢您的帮助。

如果你想在客户端进行缓存之类的事情,你可以在你的 js 中使用它

localStorage.setItem("key",data); 

经过一番研究后,我发现 HTTP 标准并不真正支持我正在做的事情。当我应该使用 get 方法时,我使用 post 方法触发了搜索。我觉得这个解决方案是一个有效的正确答案,因为它遵守 HTTP 标准并且似乎是最可靠的解决方案,无需实现某种前端框架。

jobs/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