Ruby on rails 3 如何更改机架离线的默认行为

Ruby on rails 3 如何更改机架离线的默认行为,ruby-on-rails-3,rack,Ruby On Rails 3,Rack,我正在尝试使用rials中的rack offline使我的网页脱机可用。默认情况下,rack offline将公用文件夹中的所有文件放入缓存清单。我应该在哪个文件中进行更改,以便它能够将我想要的文件添加到缓存清单中。我想将该文件包括在“我的视图”文件夹中 如果没有服务器,视图文件夹中的任何文件都不可用。是否要使缓存清单中的路由可用?例如“/about”,它对应于一个“views/about.haml”文件 将此添加到您的配置中: offline = Rack::Offline.configure

我正在尝试使用rials中的rack offline使我的网页脱机可用。默认情况下,rack offline将公用文件夹中的所有文件放入缓存清单。我应该在哪个文件中进行更改,以便它能够将我想要的文件添加到缓存清单中。我想将该文件包括在“我的视图”文件夹中

如果没有服务器,视图文件夹中的任何文件都不可用。是否要使缓存清单中的路由可用?例如“/about”,它对应于一个“views/about.haml”文件

将此添加到您的配置中:

offline = Rack::Offline.configure do
  cache "about" # or whatever your route is
  public_path = Rails.public_path
  Dir[public_path.join("javascripts/*.js")].each do |file|
    cache file.relative_path_from(public_path)
  end
end

您需要将其添加到routes.rb文件中。这是带有自定义清单的my routes.rb文件。这将为您提供索引和新路由,以及公用根目录(*.html)中的所有html文件以及子文件夹中的每个文件到公用(*/*.*)。你可以在公共文件夹中根据需要对其进行切割

我不知道如何在脱机时获取特定于数据库的路由,如show和edit。我认为Javascript是必需的。查看一些集成JS的想法

OfflineConfirm::Application.routes.draw do
  #match '/application.manifest' => Rails::Offline
  resources :contacts

  offline = Rack::Offline.configure do
    cache ["contacts/new", "contacts"]
    public_path = Rails.root.join("public")
    Dir[public_path.join("*.html"),
        public_path.join("*/*.*")].each do |file|
      p = Pathname.new(file)
      cache p.relative_path_from(public_path)
    end

    network "/"
  end

  match '/application.manifest' => offline
end
上面的路由文件将生成以下application.manifest

CACHE MANIFEST
# 700ae3e3002382cb98b93c299d7b7bda151183b4703ef65d4c46b0ecf9c46093
contacts/new
contacts
404.html
422.html
500.html
index.html
images/rails.png
javascripts/application.js
javascripts/jquery.js
javascripts/jquery.min.js
javascripts/rails.js
stylesheets/scaffold.css

NETWORK:
/

大概是您的环境配置文件?我在环境配置文件中包含了该代码。但是它不能缓存文件,不能工作。我的视图中有显示、编辑和列表。那会是个问题吗。我还提到了在底部匹配“:controller(/:action(/:id(:format))”,以路由这些视图。我认为使用:id的任何东西都不会起作用。通常,当您传递希望控制器转到数据库的ID时。因此,您正在创建一个动态事务,其中控制器将在运行时决定要做什么。脱机时,任何类型的动态事务都无法工作,只能显示静态页面。您需要对动态数据使用Javascript