Použití eruby pro vytváření HTML stránek a jeho integrace do Apache
eRuby, tedy embeded Ruby jak již název napovídá je Ruby zabudované do WWW stránek. Pro oddělění od ostatního html kódu jsou použity znaky <%
a %>
.
Blok ohraničený <%#
a %>
je ignorován.
Pokud potřebujeme uvést jen krátky příkaz, nemusíme jej uvádět jako blok ale stačí na začátek řádku napsat %
Použití eruby s apache. eruby
doesn't automatically import the parameters. Use CGI library
<% require 'cgi' params = CGI.new.params %>
CGI parametry jsou předávány jako slovník polí (Hash of Arrays)
<%= params['foo'][0] %>
Při použití multipart-requests (file upload) tak i parametry které nejsou soubory jsou objekty třídy Tempclass.
<%= params['foo'][0].read %>
Ukažme si tedy jednoduchou stránku:
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 2 <!-- $Id: hello.rhtml,v 1.1 2003/10/28 16:02:24 radek Exp $ 3 $Source: /home/radek/cvs/ruby-book/example/eruby/hello.rhtml,v $ --> 4 <% ERuby.charset = 'iso-8859-2' %> 5 <html> 6 <head> 7 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> 8 <title>Hello</title> 9 </head> 10 <body> 11 <h1>Hello</h1> 12 <p>�������</p> 13 </body> 14 </html>
Stránka se seznamem method objektu eRuby
:
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 2 <!-- $Id: eruby-methods.rhtml,v 1.1 2003/10/28 16:02:24 radek Exp $ --> 3 <% ERuby.charset = 'iso-8859-2' %> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> 7 <title>Metody modulu eRuby</title> 8 </head> 9 <body> 10 <h1>Metody modulu <tt>eRuby</tt></h1> 11 <p>Seznam metod: <%=ERuby.methods.sort.collect{|m| "<tt>#{m}</tt>"}.join ", "%> 12 </body> 13 </html>
Způsob přistupování k předávaným paramtrům.
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 2 <!-- $Id: eruby-params.rhtml,v 1.1 2003/10/28 16:02:24 radek Exp $ --> 3 <% 4 require 'cgi' 5 params = CGI.new.params 6 %> 7 <% ERuby.charset = 'iso-8859-2' %> 8 <html> 9 <head> 10 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> 11 <title>P�ed�v�n� parametr� do str�nky</title> 12 </head> 13 <body> 14 <h1>P�ed�v�n� parametr� do str�nky</h1> 15 <table border="1"> 16 <tr><th>parametr</th><th>hodnota</th></tr> 17 <% 18 params.each_key do |key| 19 puts "<tr><td>#{key}</td><td>#{params[key]}</td></tr>" 20 end 21 %> 22 </table> 23 </body> 24 </html>