0

Rails 4 アプリの問題を解決できません。お願い助けて。

「表示」アクションのコントローラーで、ビュー「テキスタイル」をレンダリングしようとします:

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

次に、公開アセットを本番サーバーにアップロードします。

どこが間違っていますか?

更新:

#{@catalog.title}= "Caesar" を#{@catalog.slug}= "caesar"に変更し、動作するようになりました。何の謎?

4

1 に答える 1

0

したがって、asset_pathファイルが存在しない場合は、渡したのと同じ文字列が返されます。あなたの場合、それらは異なるパスであるため、機能していasset_path("#{@catalog.slug}/#{wallcovering.title}.jpg")ましたが、機能していませんでした。asset_path("#{@catalog.title}/#{@wallcovering.title}.jpg")リモート ファイルにアクセスする場合、パスは大文字と小文字が区別されます。Mac では大文字と小文字が区別されないため、Mac でサーバーを実行している場合、これが機能する可能性があります。これが問題を明確にするのに役立つことを願っています。

于 2021-01-12T16:18:07.600 に答える