cloudhead / toto

the 10 second blog-engine for hackers
MIT License
1.49k stars 244 forks source link

render partials with haml #28

Open peterberkenbosch opened 14 years ago

peterberkenbosch commented 14 years ago

I would love to use partials within haml. However, when I try to render a partial, the to_html method fails. What do I need to add to the render call?

=render :partial=> "sidebar"

give's me an ArgumentError, wrong number of arguments (1 for 2)

/Library/Ruby/Gems/1.8/gems/toto-0.4.1/lib/toto.rb: in to_html

  1. def self.env= env
  2. ENV['RACK_ENV'] = env
  3. end 29.
  4. module Template
  5. def to_html page, config, &blk
  6. path = ([:layout, :repo].include?(page) ? Paths[:templates] : Paths[:pages])
  7. config[:to_html].call(path, page, binding)...
  8. end 35.
  9. def markdown text
  10. if (options = @config[:markdown])
  11. Markdown.new(text.to_s.strip, *(options.eql?(true) ? [] : options)).to_html
  12. else
  13. text.strip
girasquid commented 14 years ago

I'm also having this problem, using a stock Toto install.

After doing some more tests, I managed to get things working by running <%= rende :partial => 'sidebar', :html %> - but the problem is, my partial has to be under pages/, and it renders out the entire thing(layout and all). I'm pretty new to Ruby, so I'm not sure what I've done wrong here.

adscott commented 12 years ago

I too had this problem.

I was able to "fix" it using this monkey patch:

module Toto
  class Site
    class Context
      def to_html_without_layout(page)
        to_html page, @config
      end
    end
  end
end

And this snip in my template:

<%= render 'sidebar', :html_without_layout %>
afknapping commented 12 years ago

@adscott thx a lot!