【问题标题】:Ruby on Rails - best_in_place sanitize option doesn't work properlyRuby on Rails - best_in_place sanitize 选项无法正常工作
【发布时间】:2018-07-31 16:33:20
【问题描述】:

在我看来,我正在使用以下代码:

<div class="col-12 col-md-8">
    <% if current_user == @post.user || current_user.try(:admin?) %>
        <%=best_in_place @post, :body, :as => :textarea, inner_class: 'form-control', ok_button: 'update', ok_button_class: 'btn btn-outline-success btn-sm'%>
    <% else %>
        <p class="postbody"><%= sanitize @post.body %></p>
    <% end %>
    <div class="py-3">

输入文字:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

预期:#code 块似乎不接受 html 标记

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua。

行为

Lorem <b> ipsum </b> dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

如果我退出,我的 post.body 会被清理。 但是,如果我登录,则文本接受 html 标签。 (我猜没有被消毒) 在 best_in_place 文档中,它说 sanitize 默认设置为 true。我也试过sanitize: true,还是不行。

有人知道为什么会这样吗?

最好的问候

【问题讨论】:

  • “(<.b>test/b>) works (test)”是什么意思?您的问题措辞含糊,标题与问题不符(我认为?...既然您实际上是说sanitize 有效,但best_in_place 无效?)
  • 您输入的是什么输入? (建议:编写此格式的as code 以避免任何歧义。)HTML 中呈现了哪些数据? (建议:同样,写这个格式的as code 以避免任何歧义。)你期待什么?期望和现实有什么区别?
  • 我试图说出我的意思。你说的对。消毒确实有效,我想您对 best_in_place 的看法也是正确的。我真的在考虑切换内联编辑 gem,因为我在用它做很多事情时遇到了麻烦。但是,正如文档所述,sanitize 应该以我实现它的方式工作。
  • @TomLord 更新了我的问题。希望这会有所帮助。
  • 这就是为什么我们要求在 StackOverflow 上提供 minimal reproducible example(这里的重点是 Minimal)。如果我理解正确,您的问题可以用 one 行代码描述:&lt;%=best_in_place @post, :body, :as =&gt; :textarea %&gt;.

标签: ruby-on-rails ruby best-in-place


【解决方案1】:

似乎有一个未记录的选项:

raw: true

这将使纯 HTML 得以呈现,而无需在显示之前将其转换为纯文本。其他人在 Github 上发布了同样的问题。见这里:

https://github.com/bernat/best_in_place/issues/520

【讨论】:

  • 是的!这解决了我的问题。感谢您提及这一点!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多