0

私はRuby を初めて使用し、特定の単語が配列に含まれているかどうか基づいて 2 つのメッセージのいずれかを表示しようとしています。現在のコントローラーには次のものが含まれています。

@cookie = ["gluten", "sugar", "dairy", "chocolate"]

そして私の見解にはこれが含まれています:

<%= @cookie.include?"gluten" %>

上記は「true」を返し、ページに問題なく印刷されます。ただし、次のいずれかの方法を試しても、ページには何も印刷されません。ページはエラーなしで正常にレンダリングされますが、メッセージはありません。

<%= puts "Sorry" if @cookie.include?"gluten" %>

<%= 
if @cookie.include?("gluten")
  puts "Sorry, you cannot eat this."
    else
  puts "You have the greenlight."
    end
%>

構文で非常に単純な間違いを犯していること、またはインクルードの使用法を誤解していることを願っていますか? 関数。

4

2 に答える 2

0

すべてを 1 つの erb ステートメントにまとめたい場合は、次のようにします。

「置く」は使わない。「<%=」はすでに「to_s」を実行しており、値をレスポンス本文に出力します。「puts」を使用した場合、結果がログに表示されるのを見たことがあるかもしれません。

また、erb の場合、<% ... %> 構文、つまりロジック用であり、しばしば「each」または「if」状態であり、<%= %> は画面への書き込み用です。ほとんどの場合、<%= user.name %> のような ruby​​ オブジェクトの属性です。

于 2013-05-21T20:39:38.313 に答える
0

ruby を見ると、http://rubyfiddle.com/riddles/d6798のように聞こえます。

レールエラーに違いないので試してみてください

<% if @cookie.include?("gluten") %>
  <%= "Sorry, you cannot eat this." %>
<%  else %>
  <%= "You have the greenlight." %>
<%  end %>
于 2013-05-21T20:29:34.623 に答える