2017-08-30 69 views
0

我正在模板中定義一個塊,並將其傳遞給部分並將其呈現爲字符串,但調用部分內部的塊似乎將渲染到模板上下文中?Ruby部分塊渲染不按順序

LIB/test.rb

class Test 
    def render(&block) 
    view = ApplicationController.new() 

    view.class_eval do 
     include ApplicationHelper 
    end 

    view.render_to_string(:partial => 'cool_partial', :locals => { 
     :block => block 
    }) 

    end 
end 

控制器/ action.haml

= @test_obj.render do |variable| 
    %td='hello-world' 

應用程序/視圖/ _cool_partial.haml

%table 
    %tr 
    (0..5).each do |i| 
     block.call 

輸出

<td>hello-world</td> 
<td>hello-world</td> 
<td>hello-world</td> 
<td>hello-world</td> 
<td>hello-world</td> 
<table> 
    <tr></tr> 
    <tr></tr> 
    <tr></tr> 
    <tr></tr> 
    <tr></tr> 
</table> 

回答

1

這實際上是由於內部HAML一個問題: http://haml.info/docs/yardoc/Haml/Engine.html

由於一些紅寶石怪癖,如果範圍爲結合或PROC對象和一個塊已定,那麼評估環境可能並不完全符合用戶的期望。

但是,這可以與capture_haml幫手!

= capture_haml &row_block 

您還可以通過PARAMS也與

= capture_haml arg1, arg2, &row_block