Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2005-04-23

[開発ログ]WEB インターフェース作成中

こんな感じの erb スクリプト。 ロジックは core コマンドになっているのでそれを使うコードになる。

<html lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=EUC-JP">
<meta http-equiv="Content-script-type" content="text/javascript">
<title>ログイン</title>
</head>
<body>

<%
  name = @cgi.params['name'].first
  pass = @cgi.params['pass'].first
  sid = nil
  error = nil
  if name
    begin
      require 'command/login.rb'
      raise Core_Error unless (com = Login.new(nil, name, pass)).result
      sid = com.result
    rescue Core_Error
      error = $!.inspect
    end
  end
%>

<h1>ログイン</h1>

<% if sid %>
  <p><%= h(name) %> : ログインしました。</p>
  <p>sid : <%= h(sid) %></p>
<% else %>
  <% if error %>
    <p>Error : <%= h(error) %></p>
  <% end %>
  <form action="<%= h(@action_script) %>" method="post" class="login_form">
     <input type="hidden" name="tmpl" value="<%= h(@tmpl) %>" />
     user name : <input type="text" size="10" name="name" value="<%= h(name) %>"/>
     password : <input type="pass" size="10" name="pass" value="<%= h(pass) %>"/>
     <input type="submit" value="login" />
  </form>
<% end %>
<p><a href="<%= h(@action_script) %>?tmpl=useradd">ユーザー登録画面</a></p>

</body>
</html>

前はテンプレートとプログラムを別ファイルに分けていたのだが、面倒なのでひとつにまとめた。これくらいならデザイナも理解してくれる。規模によっては切り分けが必要か。

でも、これをデザイナに渡すと複雑な HTML になって返ってくるわけで、その中の Ruby スクリプトを編集するのも面倒な気もする。難しいところか。