Why are you mixing #capture and #capture_haml? That seems like a recipe for
trouble, and indeed seems to be what's causing this particular issue.

On Tue, Oct 13, 2009 at 8:34 PM, David <[email protected]> wrote:

>
> Hi,
>
> We are upgrading the Haml library (from 2.0.7 to 2.2.8) used for our
> Rails (2.2.3) application
> We are seeing an issue where the result of a script ( = helper_method
> (...) ) is appended to the wrong buffer in a specific case.
>
> Here is a simple example that reproduces the issue (the actual logic
> is actually spread over several helper methods like form helpers and
> other view helpers):
>
> In ApplicationHelper
> def nested_captures
>  capture do
>    capture_haml do
>      haml_concat "start"
>      haml_concat(capture_haml {
>        haml_concat "yeah"
>        yield(self)
>      })
>      haml_concat "end"
>    end
>  end
> end
>
>
> And in the Haml template:
> .section
>  .message
>    = nested_captures do |template|
>      foo
>      = succeed(",") do
>        bar
>
> With 2.2.8, we are getting:
> <div class='section'>
>  <div class='message'>
>       bar,    start
>              yeah
>       foo
>
>
>              end
>  </div>
> </div>
>
> Looking at precompiler.rb, at the end of push_script:
> push_and_tabulate([:loud, "_erbout << #{no_format ? "#
> {output_temp}.to_s;" : out}",
>  !(opts[:in_tag] || opts[:nuke_inner_whitespace] || @options
> [:ugly])])
>
> If we replace _erbout by _hamlout.buffer (like it was in 2.0.7)
> push_and_tabulate([:loud, "__hamlout.buffer << #{no_format ? "#
> {output_temp}.to_s;" : out}",
>  !(opts[:in_tag] || opts[:nuke_inner_whitespace] || @options
> [:ugly])])
>
> then we get the expected result
> <div class='section'>
>  <div class='message'>
>
>        start
>        yeah
>    foo
>    bar,
>
>        end
>  </div>
> </div>
>
> This seems to indicate that _erbout is not set correctly for the =
> succeed... .
> Not sure why _erbout != _hamlout.buffer at that point but thought I
> would ask if someone can shed some light on the issue before we dig
> further.
>
> Thanks,
> David
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Haml" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/haml?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to