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>
