2

我正在关注这个答案,同时试图弄清楚如何显示位于我的应用程序目录Rails 3 中的图像,显​​示来自 RAILS_ROOT 上方本地文件系统的 jpg 图像

我已经创建了一个控制器,如图所示,将该行添加到 routes.rb,并在测试网页中加载使用代码match调用的图像test.jpg

<img src="/serve_image/test.jpg" />

但是我收到一条错误消息,说<...>/public/images/test找不到文件。
然后我去重命名我的图像以便.jpg消失,然后脚本找到我的图像并根据需要加载它。

扩展名的任何想法?我不确定如何调试此问题。

4

1 回答 1

3

默认情况下,Rails 不匹配动态段中的点。所以对于这条路线:

match '/serve_image/:filename' => 'images#serve'

:filename只会匹配它找到的第一个点。因此/serve_image/test.jpg将与test文件名匹配,并认为您期望 JPG 作为响应。您需要做的是告诉路由器您要在文件名中包含点,如下所示:

match '/serve_image/:filename' => 'images#serve', :constraints => {:filename => /[^\/]+/}

这将匹配除正斜杠之外的任何内容,为您提供完整的文件名params[:filename]

有关更多信息,请参阅动态段的 Rails 路由指南部分

于 2013-01-26T05:24:08.740 回答