我创建了一个简单游戏,同时拥有控制器和视图。
这是我的职责:
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] 是一个粗体文本,看起来像这样:
我似乎无法在 ruby 中找到用于粗体文本的内置方法,也无法在我的 erb 文件中更改它。
您在控制器中使用
**#{@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