帮助与块和原始

时间:2011-07-11 18:23:11

标签: ruby-on-rails ruby actionview

给出像这样的帮手

def helper_method(name, &block)
  result = block_given? ? capture(&block)
  ...
  result
end

这个HAML视图

= raw helper_method do
  .content
    some html content
当与raw一起使用时,

结果为零。为什么呢?

我知道如何解决这个问题,有很多方法可以避免这种情况,但我想知道的是为什么我会失去这块?

2 个答案:

答案 0 :(得分:2)

由于您未使用(),因此该区块未到达helper_method

基本上raw方法是获得阻止的方法。

尝试:raw helper_method {}

这是do end{}块之间的主要区别之一。

或使用()来防止歧义。

答案 1 :(得分:0)

我不确定,因为我从不使用haml 但是你不需要结束标签吗?

像这样:

<%= raw helper_method do %> 

<% end %>