将数据传递给帮助者(包括标签)

时间:2014-09-14 09:20:12

标签: ruby-on-rails ruby haml

我有一个辅助函数,在haml模板中调用。它使用xpath修改data的内容。为确保此工作正常,data必须有效html。以下示例失败,因为data无效html。

%pre
  = foo(data)

现在的想法是将data包装到pre标记中,并将此有效html传递给foo,如下所示。

= foo("<pre>#{data}</pre>")

haml有可能吗?不使用字符串操作? 该解决方案适用于任何类型的标签。例如,它应该适用于标题:

%h1.title
  = foo(heading_data)

2 个答案:

答案 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方法的标记块的结果