Oh! I think I know what this is now. Haml used to assign local variables by defining methods that returned them, rather than actually, you know, assigning local variables. This means that when you render "_tag" with a collection, the "tag" faux-local overrides the "tag" helper that ActionView uses. This behavior has been changed in trunk, so it should work if you update.
- Nathan DD.Jarod wrote: > Hi, > I ran into a problem with a template named _tag.haml this day. I > searched this group and found some post with a related (maybe the > same?) problem, but no solution: > 'Strange Haml Interference with @tags or Tag.find(:all)' > http://groups.google.com/group/haml/browse_thread/thread/9d37159348fc0c52 > I tried to reply to the post, but I was unable to do that, so I made a > new one. > > Currently I ran Version 1.5.2 of haml within rails, and now to the > point: > Like Russel Norris, I have a model named 'Tag' too, and at some point > in the code, I use a template for instances of Tag: > > # .../views/.../list.haml > [...] > #content > =render :partial => @selection.to_s.downcase, :collection => > @content > [...] > > in which @selection is either Tag or Feed (both are instance of Class, > representing models) and @content is an array of instances of either > Tag or Feed. Within the _feed.haml template all went good. And here is > the _tag.haml template: > > # .../views/.../_tag.haml > .tag > .icon= image_tag 'unknown.png' unless tag.icon == '' > .name= tag.name > .tag_new= tag.tag_new? ? 'Y' : 'N' > > what happens is, that the rails helper image_tag gets screwed up. It > produces something like: > <div class='tag'> > <div class='icon'>#<Tag:0xb6880d7c></div> > <div class='name'>12345</div> > <div class='tag_new'>N</div> > </div> > > whereas the following rhtml code (after removing the _tag.haml file) > > # .../views/.../_tag.rhtml > <div class='tag'> > <div class='icon'><%= image_tag 'unknown.png' unless tag.icon == > ''%></div> > <div class='name'><%= tag.name%></div> > <div class='tag_new'><%= tag.tag_new? ? 'Y' : 'N'%></div> > </div> > > is producing > <div class='tag'> > <div class='icon'><img alt="Unknown" src="/images/unknown.png? > 1182104186" /></div> > <div class='name'>12345</div> > <div class='tag_new'>N</div> > </div> > > Until now, I havn't found another problem with the Tag model. I will > stick with the rhtml at the moment, it's not THAT ugly (... ok, it > is :). > I hope that helps with fixing the bug, or finding a workaround. > > btw I tried > .icon= self.send(:image_tag, 'unknown.png') unless tag.icon == '' > in the _tag.haml template, which resulted in the same error. > > ~ Jarod > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
