0

Rails 3 を使用していますが、問題ではないと思います。これをテンプレートヘルパーに入れました。

のように、badge-warning私が入れた値が何であれ、常に最後のケースに移動します。ratingrating_badge(4)

  def rating_badge(rating)
    case rating
    when rating > 3
      'badge-success'
    when rating < 3
      'badge-important'
    else
      'badge-warning'
    end
  end

何が悪かったのか?

4

3 に答える 3

7

ケースステートメントの上部に、迷子の評価変数があります。正しい構文は次のとおりです。

case
when rating > 3
  'badge-success'
when rating < 3
  'badge-important'
else
  'badge-warning'
end

これは、pry と irb を使用して REPL で機能します。

于 2012-07-25T15:59:40.160 に答える
1

の構文がわかりません。...caseという単語を含める必要があると思います。then

when something then result1
when something_else then result2
...

ただし、次を使用して同じ結果を得ることができますif

def rating_badge(rating)
  if rating > 3
   'badge-success'
  elsif rating < 3
    'badge-important'
  else
    'badge-warning'
  end
end
于 2012-07-25T15:53:34.190 に答える
0

に変数を指定すると、ステートメントcaseに指定された各値に対して変数の値を照合しようとします。whenそれぞれの後に条件を置くwhenと、最初に条件が評価され、次に と照合されratingます。ただし、評価はtrueorのみを生成falseし、明らかに数値をcaseに指定すると、常に大文字とelse小文字が区別されます ( norratingは決してありません)。truefalse

正しい構文は @CodeGnome によって既に投稿されていますが、この失敗の理由を知っておく必要があると思います!

:)

于 2012-07-25T17:37:11.243 に答える