asset_path在某些视图中不起作用

时间:2013-08-26 14:35:57

标签: ruby-on-rails

无法解决rails 4 app中的问题。请帮帮我。

在'show'动作的控制器中,我尝试渲染视图'textile':

render "textile" if @wallcovering.material.id == 2 || @catalog.id == 10

在'textile.html.erb'视图中,我有:

<%= image_tag "#{@catalog.title}/#{@wallcovering.title}.jpg", id: "textile_image" %>

但是在生产中的页面源中有一个普通路径,没有md5,并且找不到图像。甚至

<%= asset_path("#{@catalog.title}/#{@wallcovering.title}.jpg") %>

显示了我平凡的道路。但是我在这个视图中有另一个标签:

<%= link_to catalog_wallcovering_path(@catalog, wallcovering), data: { remote: true, bgpath: asset_path("#{@catalog.slug}/#{wallcovering.title}.jpg") }%>

和asset_path在这里工作正常。

我的应用程序中还有一些其他控制器和视图,其中资产可以正常工作。

我通过

预编译了我的资产
RAILS_ENV=production bundle exec rake assets:precompile

然后将公共资产上传到生产服务器。

我哪里错了?

UPD:

#{@catalog.title} =“Caesar”更改为#{@catalog.slug} =“caesar”,现在可以使用了。什么是神秘的?

1 个答案:

答案 0 :(得分:0)

因此,如果文件不存在,asset_path 将返回您传入的相同字符串。在您的情况下,asset_path("#{@catalog.slug}/#{wallcovering.title}.jpg") 有效而 asset_path("#{@catalog.title}/#{@wallcovering.title}.jpg") 无效,因为它们是不同的路径。当您访问远程文件时,路径区分大小写。我不确定,也许如果您在 Mac 上运行服务器,这会起作用,因为 Mac 不区分大小写。 希望这有助于澄清问题。