【发布时间】:2014-01-26 22:54:31
【问题描述】:
我们正在尝试构建一个使用 Epub.js 实现基本加载/查看功能的电子阅读器应用程序。然而,我们正在尝试使用 Rails 4.0 来构建这个应用程序,当我们尝试将 Epub.js 集成到我们的应用程序中时,我们遇到了一些问题。
我们尝试按照 Github 页面上的入门部分进行操作。我们有一个 Book 类来处理 ePub 加载。我将 epub.min.js、zip.min.js 和 inflate.js 文件都放在了 app/assets/javascripts 文件夹中。然后,我们添加必要的 javascript:
<script>
var Book = ePub("url/to/book/");
Book.renderTo("area");
</script>
这是我们遇到重大问题的地方。 ePub() 采用的参数被转换为一个 url - 例如,如果它是一个本地文件,那么该 url 将是 http://localhost:3000/books/testbook.epub。但是由于 Rail 的资产管道,我们不能有一个指向资产的直接 URL 链接,这意味着我们还没有弄清楚如何使用 url 引用本地 epub 文件。
更复杂的情况是,即使我们在 routes.rb 中放置一个将 url 直接链接到资产的路由,这也不起作用,因为 Epub.js 不只是查看 epub 文件;它还使用解包它并使用 url 查看其本地内容。此外,外部 url(如 Project Gutenberg 的 .epub 文件)也不起作用。
有没有办法解决这个问题?我对 Rails 相当陌生,所以我想知道是否有任何我忽略的关键区域。我必须对 Epub.js 进行任何修改吗?我已经搜索了 Google 和 StackOverflow 的答案,但似乎没有很多项目集成 Rails 和 Epub.js。我也尝试过其他解决方案,例如 Readium.js,但它们似乎也不起作用。
非常感谢您的帮助!
【问题讨论】:
-
我有很多问题。 “如果它是本地文件”究竟是什么意思?我们是在本地与用户交谈(意味着位于他的计算机上)还是在本地与服务器交谈(位于服务器上)?其次,我不确定您为什么要直接 URL 链接到资产。资产文件夹用于 javascript、css,您应该在公共文件夹中发布书籍(如果您希望它们可以从外部访问)。另外,如果你指向外部酒吧会发生什么?什么不起作用?
-
还有一件事。一般来说,一旦网页被创建并输出到浏览器,rails 就与它没有任何关系。因此,处理外部 URL 的问题应该在 javascrpt(您的代码或 ePub.js 代码)中
标签: javascript ruby-on-rails ruby-on-rails-4 epub