1

Railsコンソールで app["rating"] == 0 であることを確認しました。これを考慮して、特定のテキストを出力する if/else ステートメントを作成しようとしていますが、そうするのに問題があります。

何かアドバイス?

    <% if <%= app["rating"] %> == 0 %>
    no rating
    <% end %>
4

4 に答える 4

4

ERB テンプレートを使用している場合は、次のことを行う必要があります。

<% if app["rating"] == 0 %>
no rating
<% end %>

テンプレート宣言をそのようにネストする理由がわかりません。

内部<% ... %>はすべて、文字通りの Ruby コードとして評価されることに注意してください。その評価結果を表示したい場合は、 を使用して<%= ... %>ください。そこには Ruby 以外のコードが含まれifているため、その部分を表示または非表示にする効果があります。

于 2013-03-14T18:56:49.983 に答える
1

<%との間のすべて%>が補間されるので、

<% if app["rating"] == 0 %>
  html content
<% end %>
于 2013-03-14T18:57:46.037 に答える
1

<% %>if ステートメント内でerb タグをネストする必要はありません。例えば:

<% if app["rating"] == 0 %>
  no raiting
<% end %>

ただし、条件付きロジックをビューに配置すると、MVC が描画する線がぼやけます。プレゼンターやDSLSに関する議論に飛び込むことなく、これを処理する最も簡単な方法は、ヘルパー メソッドを追加することです。

これがと呼ばれるコントローラーにあると仮定するとapps_controller.rb、フォルダーapps_helper.rb内にあります。/app/helpers次のようなヘルパー メソッドを作成できます。

def display_rating(rating)
  rating = "No Rating" if rating == 0
  concat(rating)
end

次に、ビューで次を使用してこのヘルパーを使用できます<%= display_rating(app["rating"]) %>

于 2013-03-14T19:02:49.867 に答える
0

ERB を使用していると仮定すると、if/elseステートメントを実行するには、次のようにします。

 <%if app["rating"] == 0 %>
   No Rating
   <%elsif app["rating"] == 10 %>
      rating 10 
   <%elsif app["rating"] == 20 %>
      rating 20
       etc...
 <% end %>
于 2013-03-14T18:56:21.270 に答える