2016-09-13 10 views
0

Ruby on Rails(5)を使用する私はレンダリングしているビューに基づいてbodyタグのIDを変更するif文を使用したいと思います。 具体的には、自分のホームページでのみ背景画像を使用したいと思います。私はこれを画面いっぱいにしたいが、私がページに置くと、それは自分自身で境界線が現れる。そこで私はapplication.html.erbビューのbodyタグにアタッチしてIDがCSSに背景イメージをロードするように指示します。しかし、私はタイトルを取得できません:それはそこにあるとERBに伝えて、真実にしてください。レールのページタイトルに基づいてボディタグIDを変更するにはどうすればよいですか?

私がようにビューページで提供使用しています:

<% provide(:title, "Home") %> 

が続いapplication.html.erbページに、私はif文CSSの有無にかかわらずbodyタグに入れて使用しようとしています次のように、提供されたタイトルに基づいて背景画像のID:

<!DOCTYPE html> 
<html> 
    <head> 
    <title><%= yield(:title) %></title> 
    ... 
    </head> 

    <% if :title == "Home" %> 
    <body id="home-background"> 
    <% else %> 
    <body> 
    <% end %> 

これはうまくいかないようです。タイトルは「収穫」され、アドレスバーに表示されますが、ifステートメントには表示されません。私もyield(:title)を変数に入れようとしましたが、レールはそれを好まなかったのです。これは私の最初のソロ・レール・プロジェクトですが、これが可能でなければならないことは分かっていますが、正しく実行する方法がわかりません。私は文句を言わない

+0

ワンノート、:タイトルはシンボルである(コロンで始まります)。シンボルは文字列に似ていますが、メモリ内では異なる性質を持っています。チェックするには:title == "Home"は "title" == "Home"と言っているようです - 常にfalseです。シンボルの詳細については、http://www.troubleshooters.com/codecorn/ruby/symbols.htm – Swards

答えて

0

bodyタグのためにあなたをお勧めします...しかし、あなただけの背景画像用bodywrapperを使用することができます...それは、このようなことができます: -

唯一のことは、あなたが必要となります

###application.html.erb <body> <div class="<%= @title=="USER" ? 'user_wrapper' : 'default_wrapper' %>"> </div> </body> ##css .user_wrapper{ background: url(user_background.jpg) no-repeat center center fixed; } .default_wrapper{ background: url(default_background.jpg) no-repeat center center fixed; } 

の下を使用するようにインスタンス変数( @title)を作成することですが、ITが..役に立てば幸い:)

+0

を参照してください。完璧なヘルプ。どうもありがとうございます。 – FalconBrazilT1

+0

すばらしい..あなたが私の答えを受け入れてくれるかもしれません:)もしかして:.. @ FalconBrazilT1 – Milind

関連する問題