главная -> статьи -> On-line приложения на платформе Ruby on Rails (часть 2)
 
Интерфейс (формы)

  Внимание! В примерах (в приложении) используется кодировка utf-8, поэтому во избежание проблем с кириллицей, кодировки в Notepad++ следует устанавливать, как показано на рис. 1.

Рис.1 Установка кодировки Notepad++

Правила (соглашения rails):
1. При генерации нового приложения в папке C:\InstantRails\rails_apps\probe\app\views автоматически создается каталог layouts (макет, раскладка).
2. При генерации нового контроллера в каталоге C:\InstantRails\rails_apps\probe\app\controllers создается файл имя_controller.rb, а в каталоге C:\InstantRails\rails_apps\probe\app\views – папка по имени контроллера.
3. В общем случае, любому действию контроллера (Action в терминах rails), иначе – методу, должна соответствовать rhtml страница с тем же именем.
4. Ко всем страницам (формам) данного контроллера может быть применена единая раскладка (макет), определяемая файлом имя_контроллера.rhtml, файл создается разработчиком в каталоге layouts.
5. Подключаемые файлы javascript, stylesheets и др. прописываются в данном файле.
Пример файла accounts.rhtml из каталога layouts

<html>
<head>
  <meta http-equiv="Content-type" content="text/html;
  charset=utf-8" />
  <title>Библиотека: управление доступом</title>
  <%= stylesheet_link_tag "style.css" %>
  <%= javascript_include_tag "prototype" %>
</head>

<body>
  <%= @content_for_layout %>
</body>
</html>

Все достаточно прозрачно: используются «говорящие» теги. А здесь:
<%= @content_for_layout %>
будет вставлена форма из каталога views\accounts, файл login.rhtml (или другие, по необходимости)

<% form_tag :action=> "login" do -%>
 <center>
 <p>&nbsp;</p>
  <table width = "333" border="2" bordercolor = "brown">
    <tr><td bgcolor="#f7e7aa" align = "center"><b>Введите имя и пароль</b> 
    </td></tr>
    <tr><td> 
     <table border="0" width = "85%">
     <tr><td colspan = "2" align = "right">
	   <% if flash['notice'] %>
	   <%= flash['notice'] %>
	   <% end %>
     </td></tr>
     <tr><td width = "40%" align = "right">
         Имя: 
     </td><td>
     <input type="text" name="login" id="login" 
     style="width:150" value=""/><br/>
     </td></tr>
     <tr><td width = "40%" align = "right">
         Пароль: 
     </td><td>
     <input type="password" name="password" id="password" 
     style="width:150"/>
     </td></tr>
     <tr><td colspan = "2" align = "right"> &nbsp;<br>
    <input type="submit" name="login" value=" Войти "/> &nbsp;
    <input type="button" onClick = "location.href='../../'" value="Отмена"/> &nbsp; 
    </td></tr>
   </table>
  </td></tr>
  </table>
 </center>
<% end -%>

  Конструкция <% form_tag :action=> "login" do -%> ... <% end -%> определяет форму, проверьте посредством браузера: меню просмотр HTML-кода. Оформление имен полей несколько отличается от рекомендованного в примерах API.

  Выражение <% if flash['notice'] %> используется в механизме передачи коротких сообщений и будет рассмотрено дальше.

далее

   
  © 2008   Сединко А.М.
  © 2004 design by   kir
Hosted by uCoz