On Friday, May 24, 2013 8:53:38 AM UTC-4, A B wrote: > > Whatever I do I get a response page rendered like this: > > > <https://lh3.googleusercontent.com/-G9KpqL6QGKE/UZ9afeLuFpI/AAAAAAAAABk/r5rITlX-kzc/s1600/rails_render.png> > Every page is rendered with blank spaces. Even if I put HTML and ERB tags > together inline: > * > * > * > * > *## Not together inline, blank spaces are like on the picture above:* > *<div>* > > *<%= @foo %>* > > *</div>* > > > *## Together inline, see the result lower:* > *<div><%= @foo %></div>* > > > *## Result from t**ogether inline. **Blank spaces exists either but now > look like this:* > *<div class="foo">* > > *""* *## see the difference? Two double quotes together, not with a > space in-between. But anyway it is rendered!* > > *</div> * > > What I've learned so far: > > The text from Rails > guide<http://edgeguides.rubyonrails.org/configuring.html#configuring-action-view> > : > > *config.action_view.erb_trim_mode* gives the trim mode to be used by ERB. >> It defaults to '-'. See the ERB documentation for more information. > > > > But at the same time they > say<http://www.kuwata-lab.com/erubis/users-guide.05.html>that the Erubis is > the default template engine in Rails, not ERB: > > NOTICE: Rails 3 adopts Erubis as default default engine. You don't need to >> do anything at all when using Rails 3. This section is for Rails 2. > > > > And here is a code from * > gems\actionpack-3.2.13\lib\action_view\template\handlers\erb.rb:* > > # Specify trim mode for the ERB compiler. Defaults to '-'. > # See ERB documentation for suitable values. > class_attribute :erb_trim_mode > self.erb_trim_mode = '-' ### yes, trim mode is set by dafault. But it is > nothing for Erubis. > > # Default implementation used. > class_attribute :erb_implementation > self.erb_implementation = Erubis ### yes, Erubis is instead of ERB > > self.class.erb_implementation.new( > erb, > :escape => (self.class.escape_whitelist.include? template.mime_type), > :trim => (self.class.erb_trim_mode == "-") ### so :trim is true, just > because self.erb_trim_mode = '-'. That's all. > > ).src` > > > From official Erubis docs: > > Erubis deletes spaces around '<% %>' automatically, while it leaves spaces >> around '<%= %>'. >> If you want leave spaces around '<% %>', add command-line property >> '--trim=false'. >> Or add option :trim=>false to Erubis::Eruby.new(). > > > > So it is obvious that :trim => (self.class.erb_trim_mode == "-") will > never remove spaces around <%= %>. Because there is no option in Erubis > for it. And this is exactly seen on the picture above. > > This line self.erb_implementation = Erubis informs that Rails implements > Erubis instead of ERB. > > But as written above the only trim mode Erubis supports is around <% %> , > just pass true or false only. > > So any experiments with true ERB > options<http://ruby-doc.org/stdlib-2.0/libdoc/erb/rdoc/ERB.html#method-c-new>( > *< % > -)* yields nothing. Because Erubis just doesn't support them. > > My question: How to get rid of those blank spaces without switching to > Slim, Haml, etc? > > Why Rails say in their guide *See the ERB documentation for more > information* if it means nothing for default Erubis? >
I'm either reading this wrong, or something isn't making sense. If I read this correctly, you have the following in a html.erb file: <div><%= @foo %></div> and it is rendering the following html: <div class="foo"> "" </div> If that's correct, there are a couple of things. First, the rendering procedures would not have defined a class for the div tag, either that's a misprint, or you must have had it in the template code. Second, the <%= ... %> does not insert any spaces or new line characters on its own, nor does it eliminate any. It evaluates the expression and returns it. For example, if @foo is a string with the value 'aaa', the template code above would return: <div>aaa</div> In the code: <div> <%= @foo %> </div> it would render: <div> aaa </div> If I'm reading your post correctly, the value passed by @foo must include newline characters and the quotation marks. You are correct that erubis strips spaces and newline characters from <% ... %> statements and the config.action_view.erb_trim_mode no longer really does anything. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/73e0a65b-af7f-4e37-b741-32ac2a5f1c50%40googlegroups.com?hl=en-US. For more options, visit https://groups.google.com/groups/opt_out.