2012-04-13 3 views
0

私は、次のフィールド名を持つロゴモデル持って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などで置き換えるかのようにしますか?あなたがより多くの情報/コードが必要な場合は私にお知らせください。あらかじめありがとうございます

答えて

0

私はおそらくこのすべての静的なものをプリコンパイルしたいので、scssに入れないことをお勧めします生産中。

+0

「あなたは、プロダクションでこのすべての静的なものをプリコンパイルしたいと思うので、あなたが意味することをもっと教えてもらえますか?私はCSSにイメージを入れてはいけませんか? – ruevaughn

+0

静的画像はまったく問題ありません。しかし、私が正しいと思えば、このイメージを置き換えたいので、(もしコンパイルされていれば)静的なファイルの一部であってはいけません。プリコンパイルについては、[このリンク](http://guides.rubyonrails.org/asset_pipeline.html#in-production)を参照してください。これに加えて、たとえ実際にスタイルシートの画像を動的に置き換えるとしても、クライアントはあなたのCSSをキャッシュすることができないので、あなたの意見にそれを置くことは正しい方法だと思います。 – dhoelzgen

関連する問題