在 ruby 中将文本转换为粗体

问题描述 投票:0回答:1

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

这是我的职责:

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 文件中更改它。

ruby ruby-on-rails-3 erb
1个回答
4
投票

您在控制器中使用

**#{@word}**
编写的内容称为 markdown,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 是一种轻量级标记语言,经常在在线论坛(例如 Stackoverflow)中使用,以便更轻松地编写格式化文本,或者如果用户通常不了解 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

© www.soinside.com 2019 - 2024. All rights reserved.