olivernn / poirot

mustaches in your rails
http://olivernn.github.com/poirot
108 stars 21 forks source link

Support partials #15

Closed wolverian closed 12 years ago

wolverian commented 12 years ago

It'd be nice if I could use the {{> partial}} syntax to render partials. Right now it doesn't find the partial; perhaps it's not going through the Rails asset pipeline at all?

olivernn commented 12 years ago

Are you having a problem using mustache partials from JavaScript or from Ruby? It should be working from JavaScript, I'm not sure if it would work currently in ruby.

I am going to try and get a new release out before the end of the year which will resolve some of the current issues, including this if possible.

olivernn commented 12 years ago

Ok I've done some investigation on this, I think for now you can set the template path on the view class.

module Notes
  class IndexView < Poirot::View
    self.template_path = 'app/views/notes'
    self.template_extension = 'html.mustache'
  end
end

Then you can do the following in your views -

app/views/notes/index.html.mustache

<ul>
  {{> _note}}
</ul>

app/views/notes/_note.html.mustache

<li>
  <a href="/note/{{id}}">{{name}}</a>
</li>

I'll be adding the template_path and template_extension to the base class in the next release. I have had issues trying to render partials from mustache within mustache partials rendered from erb, I'm not sure if this is how you are trying to use it or not. I will try and do some more work on getting this to work properly though.

wolverian commented 12 years ago

Are you having a problem using mustache partials from JavaScript or from Ruby?

From Ruby.

I have had issues trying to render partials from mustache within mustache partials rendered from erb

I'm trying to avoid ERB completely if at all possible. It's an interesting problem space.

Thanks for your work on this!

olivernn commented 12 years ago

I have just pushed a new version of the gem which should make using partials a little bit easier, the template_path and template_extension that I mentioned earlier should be set by default in any poirot view subclasses you create.