Ruby on rails 在Rails应用程序中创建html标记包装器

Ruby on rails 在Rails应用程序中创建html标记包装器,ruby-on-rails,ruby,erb,Ruby On Rails,Ruby,Erb,我是Rails新手,我想创建一个helper函数,它使用我传递的任何内容并返回包装的元素。我试图使用类似于content\u-tag/tag的东西,但是它不会涵盖我的所有用例。它应该创建div,并将其包装在作为参数传递的元素上。在大多数情况下,它只是嵌套的HTML。我正在寻找类似下面的代码的东西,它会消耗任何东西,如果它也能与render方法一起工作,那就太好了 助手方法: def helper_method(content) content_tag(:div, content) end

我是Rails新手,我想创建一个helper函数,它使用我传递的任何内容并返回包装的元素。我试图使用类似于
content\u-tag
/
tag
的东西,但是它不会涵盖我的所有用例。它应该创建
div
,并将其包装在作为参数传递的元素上。在大多数情况下,它只是嵌套的HTML。我正在寻找类似下面的代码的东西,它会消耗任何东西,如果它也能与render方法一起工作,那就太好了

助手方法:

def helper_method(content)
  content_tag(:div, content)
end
在ERB文件中:

helper_method('<span><p>Something</p></span>')

helper\u方法(“Something

”)

作为回应,我只会通过“儿童”。我应该如何在Rails中处理它

您将准确地使用您描述它的方式。您可以通过将字符串设置为

例如:

def helper_method content
  content_tag(:div, content.html_safe)
end
请注意,这可能会带来安全问题。您不想对用户输入的字符串调用
html\u safe
,因为脚本将执行。它不是真正的
安全
,顾名思义;)

阅读更多:

对于理想方法,请使用:


捕获块,并将其传递给
content\u tag
,如下所示:

def something(css_class, &block)
  content_tag(:div, class: css_class, &block)
end
在如下视图中使用它:

<%= something('my-css-class') do %>
  ...your content here...
<% end %>

…您的内容在这里。。。

这避免了
.html\u safe

固有的安全问题谢谢你的回答,我想知道如何传递来自.erb文件中变量的动态属性设置的标记。你认为呢?谢谢你的回答,我将对它进行投票,因为它也帮助我理解了解决方案。我不确定我是否得到了这个结果,一旦它们被计算出来,你可以将它作为参数传递给函数。谢谢@viciousP,我希望你选择了
sanitize
,因为这是正确的方法,即使你将另一个答案标记为正确;)嘿@radubogdan你对
&block
的看法是什么,怎么回事?这里没有好坏之分,
&block
内容标签
属性的一部分,所以利用它是有意义的,但你做它的目的不同(Procs)。当你有一个字符串化的HTML时,这是没有意义的,因为保持对块的引用在性能上是昂贵的(很抱歉,我在第二个anwer下问了同样的问题,这是多余的)。感谢您的回答,我想知道如何通过动态设置属性的标记传递来自.erb文件中的变量。你怎么看?@VigiousP helper函数只是函数,所以请将它们作为参数传入-我将编辑答案以给出一个示例。
<%= something('my-css-class') do %>
  ...your content here...
<% end %>