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

2009/5/9 Jian L. [email protected]

but


Posted via http://www.ruby-forum.com/.


Rob L.
[email protected]

Rob L. wrote:

<%= “blah” %>

is what you are looking for

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

Jian L. 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 %>

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

2009/5/9 Jian L. [email protected]

Alberto S. wrote:

Jian L. 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
%>