あなたの問題を正しく理解していれば、一部のモデルはロゴを定義しています。そのような場合、CSS を台無しにすることはありません。アセット ファイルは静的であると想定されるため、少なくともアセット ファイルを台無しにすることはありません。
レイアウトでロゴを定義できます。次のapp/viev/layouts/application.html.erb
ようなものを作成してください。
<head>
..
<style type="text/css">
#header { background-image: url("<%= @logo_path || 'logo.jpg' %>"); }
</style>
また
<head>
<% if @logo_path %>
<style type="text/css"> #header { .... } </style>
<% end %>
次に、一部のコントローラー、アクション、または一部のビューで@logo_path
、ロゴをデフォルトとは異なるものにしたい場合は、インスタンス変数を設定するだけです。
静的 CSS でデフォルトの背景画像を定義し、レイアウトのこのルールが静的アセットのルールよりも重要であることを確認してください。疑問がある場合は!important
、レイアウトのルールに条項を追加してください。
もちろん、動的に JavaScript を意味する場合は、スクリプトとロゴ パスonclick
を特定の要素の属性に直接含めることができます。次のようにします。
<span onclick="replace_logo('<%= model.logo_path %>')">....</span>
関数replace_logo
を書くのは難しくありません。