2

index.html.erb ファイルの私のコードは以下に掲載されています。通常の ruby​​ ファイルでテストしたところ、出力に引用符や括弧が表示されませんでした。ただし、erb ファイルで同じコードを使用すると、ブラウザーで表示すると、各値の周りに引用符と角括弧が表示されます。これを回避する方法はありますか?

---
title: Coast Guard Quiz
---

<%

seaman_recruit = {

    img: "<img src = 'images/USCG_SR.png'>",
    name: "Seaman Recruit",
    en_class: "Seaman",
    abbr: "SR",
}

seaman_apprentice = {
    img: "<img src = 'images/USCG_SA.png'>",
    name: "Seaman Apprentice",
    en_class: "Seaman",
    abbr: "SA",
}

seaman = {
    img:  "<img src = 'images/USCG_SM.png'>",
    name: "Seaman",
    en_class: "Seaman",
    abbr: "SN",
}

ranks = [seaman_recruit, seaman_apprentice, seaman]

ranks.shuffle!

current_rank = ranks.shuffle!.first

%>

<p><%= current_rank.values_at(:img) %></p>
<p class="bld"><%= current_rank.values_at(:name) %></p>
<p><%= current_rank.values_at(:en_class) %></p>
<p><%= current_rank.values_at(:abbr) %></p>
<p><%= current_rank.values_at(:title) %></p>
<p><%= current_rank.values_at(:paygrade) %></p>

たとえば、次のように表示されます。

【「(実際のイメージ)」】

【「シーマン」】

【「シーマン」】

["SN"]

【「船員(姓)」】

[「E3」]

そして、私はこれを見たい:

(実際の画像)

シーマン

シーマン

SN

シーマン(姓)

E3

4

1 に答える 1

1

.values_at常に配列を返します。オプションで複数の引数を受け入れ、ハッシュから対応する値を返します。引数を 1 つだけ指定しているため、1 つのメンバーを持つ配列が得られます。

current_rank[:title]ブラケット表記 (など) またはfetch( )を使用して、標準のルックアップが必要なだけですcurrent_rank.fetch(:title)。Fetch には、指定されたキーがハッシュに存在しない場合のエラーを防ぐために、デフォルト値を定義するオプションが追加されていますcurrent_rank.fetch(:key) { 'default value' }

通常、ERB はデータや動作を定義するのに適した場所ではありません。スタンドアロンの erb テンプレート (Rails や Sinatra でサポートされていない) を使用していると仮定すると、個々のファイルで、または標準の ruby​​ ファイルの文字列として、テンプレートを ruby​​ コードとは別に定義することをお勧めします。いくつかの例については、ドキュメントを参照してください。

于 2013-02-17T01:10:10.653 に答える