我有一个辅助函数,在haml模板中调用。它使用xpath
修改data
的内容。为确保此工作正常,data
必须有效html
。以下示例失败,因为data
无效html。
%pre
= foo(data)
现在的想法是将data
包装到pre
标记中,并将此有效html
传递给foo
,如下所示。
= foo("<pre>#{data}</pre>")
haml有可能吗?不使用字符串操作? 该解决方案适用于任何类型的标签。例如,它应该适用于标题:
%h1.title
= foo(heading_data)
答案 0 :(得分:0)
数据强>
首先,您将纯HTML发送给帮助者是什么?
与大多数编程中的情况一样,&#34;参数&#34;你发送给帮助者只是调用方法的方法。这意味着您只需发送所需的最简洁数据,并让helper /方法根据需要输出它。
坦率地说,我建议反对发送您正在查看的数据文件。
<强>建议强>
在不知道foo
方法的全部内容的情况下,我建议您这样做:
#view
= foo data
#app/helpers/application_helper.rb
class ApplicationHelper
def foo data
code = "<pre>#{data}</pre>"
return raw code
end
end
答案 1 :(得分:0)
我并不完全清楚你要做什么,但是对我来说,你的功能的使用应该是沿着
的路线。= foo do
%pre= data
或
= foo do
%h1= data
在第二种情况下。为了支持这一点,你的foo函数应该看起来像
def foo(&block)
data = capture(&block)
# transform data and return it
# Don't forget about html safety!
end
此处data
将设置为评估传递给foo
方法的标记块的结果