2016-07-14 17 views
2

ウェブページのタイトルに上付き文字と下付き文字を表示する必要があります。私は下付きまたは上付き文字のパターンを認識するヘルパーメソッドを持っており、しかし&sub2;または²Rubyが&から&に&を変更しないようにしますか?

に変換し、それがレンダリングされたページのファイルに現れたとき、それはソースコードに現れるよう:

&sub2; 

これは正しくありません。私はそれが次のように設定されています:

<% provide(:title, raw(format_title(@hash[:page_title]))) %> 

しかし、生の動作していません。どんな助けもありがとうございます。

方法:私も試してみました

def format_title(name) 
label = name 
if label.match /(_[\d]+_)+|(~[\d]+~)+/ 
    label = label.gsub(/(_([\d]+)_)+/, '&sub\2;') 
    label = label.gsub(/(~([\d]+)~)+/, '&sup\2;') 
    label.html_safe 
else 
    name 
end 

終了:それは戻っています

str.gsub(/&amp;/, '&') 

しかし:

&amp;amp;sub2; 
+1

あなたの 'format_title'メソッドには何がありますか? –

+0

これは '<%provide ....'に '='がありませんか?埋め込まれたルビのための '.erb'では、'%= provide ... 'を使用する必要があります。 – Lahiru

+0

メソッドを追加しました@NicNilov – yondaimehokage

答えて

0

あなたはまた、Railsの国際化でこれを達成することができます。

<%= t(:page_title_html, scope: [:title]) %> 

それぞれのロケールファイル。 (title.en.ymlおそらく):ここで

title: 
    page_title: "Title with &sup2;" 

は添字と上付き文字に関するHTML symbolsするための図です。詳細については

Preventing HTML character entities in locale files from getting munged by Rails3 xss protection


をチェックし更新

あなたが動的にページタイトルをロードする必要がある場合は、まず、あなたがPage Title Helperのような宝石をインストールする必要があります。

宝石資料のガイドに従うことができます。

+0

あなたのページに応じて、ページのタイトルが動的に変更されるため、残念ながら、これは私にとっては役に立ちません。 – yondaimehokage

+0

@yondaimehokage答えを – Lahiru

0

あなたの例には2つの問題があります。一つは重要でもう一つは偶然です。

最初の問題は、実際には存在しない文字エンティティを使用しようとしていることです。具体的には、あるだけ&sup1;&sup2;それぞれ1、及び上付き記号を提供&sup3;&sup4;などの文字エンティティはありません。また、他の上付き数字もありません。あなたが使うことができる他の数字のための裸のコードポイントがありますが、これはより複雑なコードを必要とします。

さらに重要なことに、HTML5 character entities listには添字エンティティはまったくありません。すべての添え字数字は裸のコードポイントです。したがって、&sub2;または他の「下付き文字」の数字で置き換えるのは意味がありません。

あなたのサンプルが動作していない理由は、選択したテスト文字列によるものです。 _2_mystringのようにアンダースコアを付けるものは、&sub2;に正しく置き換えられます。 &sub2;文字エンティティが存在しないため、文字列はそのまま現れ、rawメソッドが何らかの形で機能しないという印象を与えます。

~2~mystringを使用してください。これは、上付き文字エンティティ&sup2;に置き換えられ、正しくレンダリングされます。これはあなたのコードが正しいことを示していますが、文字エンティティに関する基本的な仮定はありません。

+0

に更新しましたタグはこの値がタグの間に表示される必要があるため、私には役に立ちません。 – yondaimehokage

+0

あなたは正しいです、申し訳ありません。私の更新された答えを見てください。 –

関連する問題