42.2. Použití eruby

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

Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .