テキストをルビで太字に変換する

概要

私が作成した単純なゲームにはコントローラーとビューの両方があります。

これは私の関数です:

def score
    @letters = params[:letters]
    @word = params[:word].upcase
    if !compsrison?(@word.split(''), @letters.split)
      @result = "Sorry, but #{@word} can't be build out of #{@letters}"
    elsif !check_api?(@word)
      @result = "Sorry, but #{@word} doesn't seem to be valid English word..."
    else
      @result = "Congratulations! #{@word} is a valid English word!"
    end
  end

そして結果に対する単純な私の見解:

 <div class="result">
    <%= @result %>
  </div>

params[:word] と params[:letters] を次のような太字のテキストにしたいのですが:1

Ruby で太字テキストの組み込みメソッドが見つからないか、erb ファイルで変更できないようです。

解決策

#{@word} を使用してコントローラーに書き込んだものはマークダウンと呼ばれますが、これはそのままでは Ruby on Rails でサポートされていません。 Redcarpet (https://github.com/vmg/redcarpet) のような Markdown レンダラーを使用し、ビューで次のようなことを行う必要があります。

markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, tables: true)

markdown.render(@result)

ただし、Markdown は軽量のマークアップ言語であり、書式設定されたテキストを簡単に記述できるようにするため、またはユーザーが通常 HTML を知らない場合に、オンライン フォーラム (Stackoverflow など) でよく使用されます。

この例では、HTML だけを使用することもできます。テキストを太字にするには、 タグを使用します。

@result = "Congratulations! <b>#{@word}</b> is a valid English word!".html_safe

文字列の最後にある html_safe にも注意してください。そうしないと、Rails がビュー内でこの文字列をエスケープします。 html_safe を使用するのは理想的ではありません。コントローラー内のコードはビューに属していると私は主張します (その場合、html_safe はもう必要ありません。

https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://apidock.com/rails/String/html_safe https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://github.com/vmg/redcarpet