<% %> is not exactly the same as <?php ?>

it seems that <% %> is not exactly the same as <?php ?> in which,

PHP's <?php echo "something" ?>

will add to the output

but

ERB's <% puts "something" %>

will not?

Does someone know if JSP and ASP behave like ERB or PHP and can make a summary of their likes and differences? Thank you.

Jian Lin wrote:

it seems that <% %> is not exactly the same as <?php ?> in which,

PHP's <?php echo "something" ?>

will add to the output

but

ERB's <% puts "something" %>

will not?

actually, i found that <% puts 123 %> prints 123 to the stdout. so the shell that is running script/server will see "123"... but the 123 is not part of the webpage generated. Is there a way or option to include that 123 as part of the generated HTML? thanks.

<%= “blah” %>

is what you are looking for

RobL

http://www.robl.me

Alberto Santini wrote:

Jian Lin wrote:

actually... sometimes i want to output multiple things inside of <% %>, or put everything inside a loop and inside a <% %>, so that's why the question of <% puts 123 %>

I think you should use something like:

<% for x in y do %>   <%= "#{x.z}, #{x.a}" %> <% end %>

so for example... if i have the code

<% begin   t = ''   s = Iconv.conv("UTF-32", "UTF-8", some_utf8_string)

  (s.length / 4).times do |i|     b3 = s[i*4 + 2]     b4 = s[i*4 + 3]     t += ("&#x" + "%02X" % b3) + ("%02X" % b4) + ";"   end rescue => details   t = "exception " + details end %>

<%= t %>

then if i don't want to concat the output into t first... then would it be a bit messy to use

<% begin   t = ''   s = Iconv.conv("UTF-32", "UTF-8", some_utf8_string)

  (s.length / 4).times do |i|     b3 = s[i*4 + 2]     b4 = s[i*4 + 3] %>

<%= ("&#x" + "%02X" % b3) + ("%02X" % b4) + ";" %>

<%   end rescue => details %> <%= "exception " + details %>

<% end %>

putting this code into a helper method or partial will keep your views clean. http://api.rubyonrails.org/classes/ActionController/Helpers/ClassMethods.html http://api.rubyonrails.org/classes/ActionView/Partials.html

I would suggest most of that should be in the controller not the view, you don’t want to be rescuing exceptions in the view.

Colin