Rails 使用 Paperclip 插件上传了一个 HTML 文件,如何能够浏览该文件?

bjyuxiao · 2014年04月06日 · 最后由 hozaka 回复于 2014年04月08日 · 2974 次阅读

使用 paperclip 插件上传了一个 html 文件,已经实现了上传该 html 文件到 rails 的 public 的相应的文件夹中,我想在页面上点击某一个链接,实现浏览该这个 html 文件,这个该怎么实现呢!thx。

上传完成的时候为 html 生成一个链接呗。。。。。。

最好使用短 hash,类似短链接那种,来尽量避免冲突。

好像某些公司的活动页面就是像我说的这个。。。。

http://xxx.com/sd8sk2ds.html这种。。

#1 楼 @pynix 生成了一个链接是链接到 public/upload 的文件夹中,打开报 routing error 求详细点介绍撒。

public 目录直接由 web 服务器提供服务,不用进入 ruby 生命周期。

那就生成 upload/das87da0.html,文件重命名。

url 就对应http://xxx.com/upload/das87da0.html

#4 楼 @pynix 兄弟,该怎么写访问 upload 文件下的路由呢,我访问的时候还是报 routing error

#5 楼 @bjyuxiao 不用写路由 如果你是 nginx 代理了 public 下的目录 那就是直接能访问 如果你不是 nginx 访问的话 确认下 config.serve_static_assets的值 false 说明 rails 不处理静态文件 就是报路由错误

#6 楼 @zj0713001 我没有用 nginx 代理,在 application.rb 里也没有发现config.serve_static_assets = alse 我自己添加了一条。还是报路由错误。下午回来试试 nginx 代理 public 目录吧

刚看了些资料,可能是我没有在 Production 模式下运行吧

Production 模式

The production environment is meant for finished, "live" apps.

Code is not reloaded between requests

config.cache_classes = true cache_classes = true 表示在 production 中,類別檔案載入進記憶體中就快取起來了,大大獲得效能。不像在 development 環境中每一次 HTTP 請求就會重新載入一次。

Full error reports are disabled and caching is turned on

config.consider_all_requests_local = false config.action_controller.perform_caching = true 不同於 development,如果在 production 環境出現例外錯誤,不會顯示程式 call stack 訊息,而是回傳 public/500.html 頁面。

Disable Rails's static asset server (Apache or nginx will already do this)

config.serve_static_assets = false 不像 development 和 test,在這裡我們會讓 Rails 應用伺服器關掉對靜態檔案的回應。在 production 環境中,靜態檔案應該由效能極佳的 Apache 或 Nginx 網頁伺服器直接提供檔案。我們會在部署一章詳細介紹伺服器的架構。

#5 楼 @bjyuxiao 直接访问静态文件是不经过 rails routes 的。。

#7 楼 @bjyuxiao 如果你启动 development 就更好排查了 你看看你的 public 目录下有那个 html 文件吗

Don't do that

需要 登录 后方可回复, 如果你还没有账号请 注册新账号