<% %> 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