2016-11-13 14 views
0

プレーヤーの文字を追跡するためのアプリケーションを作成しています。キャラクターのページの背景の変化を現在の最大の健康状態のパーセンテージに応じて涼しくすることを考えました。私は動的にそれを変更するために 'javascript_tag'タグを使用しようとしています。ここで javascript_tagを使用してページの背景色を変更する

がshow_html_erbファイルからコードスニペットです:

def getPercentHealth 
    perc = 0.00 
    perc = hitpoints/maxHP 
    return perc 
end 

It runs smoothly, but does not change the background color. Any suggestions? 

答えて

0

あなたがする必要はありません。追加の参考のため

<% javascript_tag do %> 
    var perc = @character.getPercentHealth.to_json %>"; 
    if (perc > .5) { 
     document.body.style.backgroundColor = "green"; 
    }else if(perc > .25) { 
     document.body.style.backgroundColor = "yellow"; 
    }else if(perc > 0){ 
     document.body.style.backgroundColor = "red"; 
    }else{ 
     document.body.style.backgroundColor = "grey"; 
    } 
<% end %> 

、ここに私のcharacter.rbファイルからgetPercentHealth方法でありますあなたがしたいのでなければJavaScriptを使用しますか?

<% if @character.getPercentHeath > 5 %> 
<body style="background-color: red;"> 
<% end %> 
+0

ありがとうございました!これははるかにクリーンです。私はまだRuby/Railsには新しく、知識の不足を許しています。 –

+0

それは問題ありません。私もそこにいましたが、まだある程度です。どういたしまして! – Crashtor

0

上記の解決方法は、CSSのみを使用する点で優れています。しかし、理想的には、CSSはhtmlから分離されており、可能な限り多くのロジックがビューファイルから抽象化されています。これをきれいにするために、ヘルパーメソッドを作成してパーセンテージの健康変数を渡し、classNameを返します。

helper_file.rb

def health(percentage) 
    case percentage 
    when > 0.5 
     "goodHealth" 
    when > 0.25 
     "mediocreHealth" 
    when > 0 
     "poorHealth" 
    else 
     "" 
    end 
end 

view.erb

<body class="<%=health(percentage) %>"> 

Styles.cssを

.illHealth {background-color: red;} 
.mediocreHealth {background-color: yellow;} 
.goodHealth {background-color: green;} 
.noHealth {background-color: grey;} 
関連する問題