私は、次のフィールド名を持つロゴモデル持ってhereロゴを交換可能にする。 scss.erbやアプリケーションのレイアウトでやりますか?
以前の記事を参照してください、私のレールのロゴが互換アプリ作るしようとしています:文字列、画像:文字列、デフォルト:ブール
私はをcarrierwave gemを使用してimage:stringカラムに画像をアップロードします。
アプリ/モデル/ logo.rb
class Logo < ActiveRecord::Base
mount_uploader :image, LogoUploader
scope :default, where(default: true)
def falsify_all_others
Logo.where('id != ?', self.id).each do |item|
item.default = false
item.save
end
end
end
私はここで見ロゴコントローラを、持っている
アプリ
アプリ/ /コントローラ/ logos_controller.rb
class LogosController < ApplicationController
def new
@logo= Logo.new
end
def create
@logo = Logo.new(params[:logo])
if @logo.save
@logo.falsify_all_others
redirect_to logos_path, :notice => "Logo has been uploaded successfully"
else
render "new"
end
end
def edit
@logo = Logo.find(params[:id])
end
def destroy
@logo = Logo.find(params[:id])
@logo.destroy
flash[:notice] = "Logo has been obliterated!"
redirect_to logos_path
end
def update
@logo = Logo.find(params[:id])
if @logo.update_attributes(params[:logo])
@logo.falsify_all_others
flash[:notice] = "Logo has been changed successfully!"
redirect_to logos_path
else
flash[:alert] = "Logo has not been updated."
render :action => "edit"
end
end
def show
@logo = Logo.find(params[:id])
end
def index
@logos = Logo.all
end
end
と私のアプリケーションコントローラcontrollers/application_controller.rb
before_filter :get_logo
def get_logo
@logo_default = Logo.default
end
だから、自分が作成した後に/ carrierwaveを通じて、いくつかの画像をアップロードし、私はこのようなロゴを表示します(私はデフォルトのロゴを追加したい アプリ/ビュー/ロゴ/ show.html.erb
<%= image_tag @logo.image_url.to_s %>
を私は自分のロゴの範囲で見つけます)をホームページに表示します。今、それはこのコードをアプリ/資産/スタイルシート/ styles.scss.erb介して行われ
section#header {
height: 220px;
position: relative;
h1 {
background-image: url('<%= asset_path 'logo.png' %>');
position: absolute;
width: 412px;
height: 188px;
z-index: 999;
}
は、だから私の質問はこれです:私はSCSSの外にロゴを表示するコードを引っ張っする必要がありますか.erbを追加してapp/views/layouts/application.html.erbに追加するか、scssで変更することはできますか? asset_pathをimage_tagなどで置き換えるかのようにしますか?あなたがより多くの情報/コードが必要な場合は私にお知らせください。あらかじめありがとうございます
「あなたは、プロダクションでこのすべての静的なものをプリコンパイルしたいと思うので、あなたが意味することをもっと教えてもらえますか?私はCSSにイメージを入れてはいけませんか? – ruevaughn
静的画像はまったく問題ありません。しかし、私が正しいと思えば、このイメージを置き換えたいので、(もしコンパイルされていれば)静的なファイルの一部であってはいけません。プリコンパイルについては、[このリンク](http://guides.rubyonrails.org/asset_pipeline.html#in-production)を参照してください。これに加えて、たとえ実際にスタイルシートの画像を動的に置き換えるとしても、クライアントはあなたのCSSをキャッシュすることができないので、あなたの意見にそれを置くことは正しい方法だと思います。 – dhoelzgen