在 ruby 中将文本转换为粗体

Transforming text to bold in ruby

我创建了一个简单的游戏,同时拥有控制器和视图。

这是我的功能:

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}** 编写的内容称为 markdown,Ruby 在 Rails 上确实不支持开箱即用。您需要使用像 Redcarpet (https://github.com/vmg/redcarpet) 这样的 Markdown 渲染器,并在您的视图中执行类似的操作。

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

markdown.render(@result)

然而,Markdown 是一种轻量级标记语言,经常用于在线论坛(例如 Whosebug),以便更轻松地编写格式化文本,或者如果用户通常甚至不知道 HTML。

在您的示例中,您也可以只使用 HTML。要使文本加粗,您可以使用 <b> 标签。

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

另请注意字符串末尾的 html_safe,否则 Rails 会在您看来转义该字符串。使用 html_safe 并不理想,我认为您在控制器中的代码属于视图(然后您不再需要 html_safe

https://apidock.com/rails/String/html_safe https://github.com/vmg/redcarpet