2016-06-16 4 views
0

divクラスのbackground-imageプロパティを持つユーザーのプロフィール画像を表示する必要があります。問題は、image-urlとasset-urlはscssファイルからのみ呼び出すことができ、scssファイルからは@user変数が見えないことです。ユーザーIDにアクセスしようとすると、「未定義のローカル変数またはメソッド `params '」と表示されます。他のトピックで答えを見つけることができませんでした。SASS:背景画像urlとrailsコントローラ変数

background-image: image-url(<%= @user.avatar %>) 

答えて

2

アセットファイルは、特にプリコンパイル、フィンガープリンティング、およびすべてを使用してアセットパイプラインを降りてきたときに、静的に設計されています。別のユーザーがログインするたびに変更することはできません。これは、プリコンパイルされた、フィンガープリントされた、静的なアセットが完全に必要となるためです。

開発環境にあるためにプロビジョニングが問題になることはありませんが、プロダクションでは問題になります。

これは、珍しいシナリオの1つで、style属性がはるかに適切です。または、divのclass/id/selectorに一致するすべての要素のstyle属性を変更するページ内のJavaScriptです。このためasset_urlおよび/またはimage_urlを利用することができます

<img src="placeholder.gif" style="background-image: url(<%= asset_url(...)%>);" /> 

は、任意のRailsのビューで使用可能ですAssetUrlHelperのドキュメントを参照してください!

+0

答えをありがとう。私はここで変更を加えることを検討しますが、それでも可能であることを知りたいと思っています。もう1つの問題は、sssプロパティーimage-urlとasset-urlは.scssファイルからのみ呼び出すことができ、レールは通常の「background:url」でアセット画像を見ることができないということです。これはまったくできないかもしれません。 –

+0

@DR_申し訳ありませんが、あなたは 'image_url'と' asset_url'をビューで使うことができます。私はそれを私の答えに加えます。 – sjagr