【发布时间】: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 行代码描述:
<%=best_in_place @post, :body, :as => :textarea %>.
标签: ruby-on-rails ruby best-in-place