0

Ruby の条件付きロジックに問題があります。確かに、私は Ruby のすべての初心者です。

このコードが原因で、サイトが読み込まれません:

<body style="background-image:url("<%= if @is_home_page.present? '/images/bg-main-power-bg.jpg' else '/images/bg-inner-power-bg.jpg' end %>"); background-repeat:repeat-x;">

条件がなければ、CSS は問題なく読み込まれます。

私は何を間違っていますか?

ありがとう

4

3 に答える 3

2

インライン条件には三項演算子を使用します。

condition ? branch_a : branch_b

a == b ? "foo" : "bar"
# is the same as
if a == b
  "foo"
else
  "bar"
end

あなたの特定のケースでは:

@is_home_page ? '/images/bg-main-power-bg.jpg' : '/images/bg-inner-power-bg.jpg'
于 2012-12-04T23:12:41.347 に答える
2

元のコード: 発生する可能性のあるエラーは、おそらく"このスニペットの 2 番目が原因"background-image:url("<%= ...です。<%= ... %>文字列全体がすでに二重引用符で区切られているため、 が二重引用符ではなく単一引用符で囲まれるように変更してみてください。

理想的には、次のように努力する必要があります。

  • ビューからロジックを削除
  • インライン スタイルは避けてください。

そう:

some.html.erb

<body class='<%= body_class %>'>

some_helper.rb

class SomeHelper
  def body_class
    @is_home_page.present? ? "has_homepage" : "no_homepage"
  end
end

some.css:

body.has_homepage
  background-image:url('/images/bg-main-power-bg.jpg')
  .......
body.no_homepage
  background-image:url(/images/bg-inner-power-bg.jpg')
  .......
于 2012-12-04T23:33:15.463 に答える
1

これをヘルパー ファイルに移動することも検討してください。以下を追加できますapp/helpers/application_helper.rb

def bg_path
  return '/images/bg-main-power-bg.jpg' if current_page? root_path
  '/images/bg-inner-power-bg.jpg'
end

これにより、ビューが少しきれいになります。

<body style="background-image:url("<%= bg_path %>"); background-repeat:repeat-x;">

読書: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F

于 2012-12-04T23:26:13.823 に答える