2010/6/22 (一) アプリケーションのカスタマイズと検索機能
来源:互联网 发布:php专业实例开发 编辑:程序博客网 时间:2024/05/16 08:44
今日の半日は『RubyonRailsで作るWebアプリケーション入門』の本の4日目と5日目の部分を参照して、以下のStepでadnoteアプリケーションを作って、そしてテーブルの項目一個追加して、ScaffoldでMVCを作り直した。
そして、画面表示の英語の部分を日本語化しました。例えば、リンクと、ボタンと、タイトルと、メッセージなど。
その上、共通のHTMLファイルとスタイルファイルも少し編集して試した。
最後一番重要なことに、アプリケーションに名前で検索の機能を追加した。
--------------------------------
Step 1 adnoteアプリケーション新規
--------------------------------
>rails adnote -d postgresql
>cd adnote
>ruby script/generate scaffold note name:string address:string telno:string
* database.ymlファイルにusernameとpassword設定
>rake:db create
>rake:db migrate
>ruby script/server
http://localhost:3000/notesにアクセスして、項目を新規して、動作を確認する。
--------------------------------
Step 2 テーブル項目追加
--------------------------------
postgresqlのpgAdminⅢでadnote_developmentデータベースのnotesテーブルにmemo列(型:text)を追加する。
以下のように再度scaffoldによってモデルやコントローラ、それに表示ページのためのviewsフォルダ内のファイルを生成させる必要がある。
>ruby script/generate scaffold note name:string address:string telno:string memo:string
次のような質問が表示される。
overwrite app/views/notes/index.html.erb?(enter "h" for help)[Ynaqdh]a
aキーですべてのファイルを上書く。
--------------------------------
Step 3 アプリケーションの日本語化
--------------------------------
1. Viewのhtml.erbを文字コードをUTF-8を変換して、画面の英語表示を日本語に変換する。
index.html.erb
edit.html.erb
new.html.erb
show.html.erb
2. サイトタイトルの変更
app/views/layouts/notes.html.erbファイルの<title></title>の部分を以下のように編集する。
<title>アドレス帳:<%= controller.action_name %></title>
--------------------------------
Step 4 フッタ入れる
--------------------------------
notes.html.erbファイルに以下のコード入れると、フッタが表示されるようになる。
<hr>
<div align="center">
Copyright(C) Geyuye 2010 All Rights Reserved.
</div>
--------------------------------
Step 5 ページのスタイルを変更
--------------------------------
public/stylesheets/scaffold.cssファイルを変更してみる。
body { background-color: #87ceed; color:#000 }
--------------------------------
Step 6 検索機能の追加
--------------------------------
1. 一覧画面に検索部分を追加
index.html.erbファイルの先頭に次のようなコードを追加する
<% form_tag :action => 'search' do %>
<%= text_field :note, :name, :value => @keyword %>
<%= submit_tag '検索する' %>
<% end %>
2. コントローラに検索メソッドを追加
notes_controller.rbファイルに次のようなメソッドを追加する
def search
@search = Note.find(:all, :conditions => ["name LIKE ?", "%" + params[:note][:name] + "%"])
@keyword = params[:note][:name]
respond_to do |format|
format.html # search.html.erb
format.xml { render :xml => @notes }
end
end
3. 検索結果画面を作成
search.html.rbファイルを作成する。
---------------------------------------
<h1>検索結果</h1>
<table>
<tr>
<th>名前</th>
<th>住所</th>
<th>電話番号</th>
<th>メモ</th>
</tr>
<% for note in @search %>
<tr>
<td><%=h note.name %></td>
<td><%=h note.address %></td>
<td><%=h note.telno %></td>
<td><%=h note.memo %></td>
<td><%= link_to '詳細表示', note %></td>
<td><%= link_to '編集', edit_note_path(note) %></td>
<td><%= link_to '削除', note, :confirm => '本当に削除してもいいですか?', :method => :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to '戻る', notes_path %>
---------------------------------------
では、これでいろいろめちゃくちゃ編集した後と検索機能を追加後実行する結果:
--------------------------------
終わりのメモ
--------------------------------
ruby script/generate scaffold テーブル名(単数形) カラム名1:データ型 カラム名2:データ型
database.ymlにdevelopmentとproductionとtest三つの節がある。。。
Railsはフレームワークだから、開発モード(development)や実操業モード(production)、それにテストモード(test)の各モードで動作し、それぞれのモードで異なるデータベースを利用することができるようになっている。
>rake:db createコマンドでXXX(アプリケーション名)_developmentというデータベースが自動的に作られる。
>rake:db create allコマンドでXXX(アプリケーション名)_developmentとXXX_productionとXXX_test三つのデータベースが作られる。
base.rb - 継承元のスクリプト
notes_controller.rbファイルの中: class NotesController < ApplicationController
application_controller.rbファイルの中: class ApplicationController < ActionController::Base
じゃ、この継承元のスクリプトはどこにあるだろう。
フォルダ:ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record
このファイルに、findやcreate、deleteといったメソッドが定義されいる。
HTMLソース
<% form_tag :action => 'search' do %>
⇒ <form action="/notes/search" method="post">
<%= text_field :note, :name, :value => @keyword %>
⇒ <input id="note_name" name="note[name]" size="30" type="text" />
<%= submit_tag '検索する' %>
⇒ <input name="commit" type="submit" value="検索する" />
Rubyファイルの作り方まだわかりません。。メソッドの書き方とか、パラメータの渡し方とか。。
ただ本の中のサンプルに従って検索機能を追加しましたけど、理解までちょっと。。
迷い続く。。
- 2010/6/22 (一) アプリケーションのカスタマイズと検索機能
- 2010/6/21(一) Shopアプリケーション
- トランザクションについて、一つの簡単なサンプル
- 2010/7/14 画面サンプル作る際のメモ(一)
- 2010/6/21(二) kaedeアプリケーション
- Oracle Databaseの.NETアプリケーションの構築
- 第4回 知識エリア「エンタープライズアナリシス」を理解する
- イタチの養鶏場で鼠を捕ると一緒に遊びキジ
- VB.NET とオラクルの接続(一つ簡単なサンプル)
- 2010/6/30 アプリケーション「じゃんけん」
- アイフォン6 ケース 手帳 ボーダフォンPAYGでケンモアのViewty Ku990iによるクラスとスタイル
- 2010-6-28 Ruby on Rails Webアプリケーションフレームワーク概要
- 树形DP入门(一)『ツリーとしては』
- MS-DOS(コマンドプロンプト)コマンド 一覧
- (PS)賭博黙示録カイジ汉化笔记(一)
- Javaコードの診断: 拡張可能アプリケーションの設計 第1回
- 日本語トレーニング(一)
- 一休の歌
- 中国大学生就业指南
- 中国人的逻辑思维能力
- 垃圾博客还学人家注册之类的。。
- nucleus实时操作系统MTK手机软件系统工程和配置简介
- 不合法的XML字符必须被替换为相应的实体 [Asp.net HTML XML]
- 2010/6/22 (一) アプリケーションのカスタマイズと検索機能
- 10个办法让你的网站流量轻松过万
- PThread
- 看看有图吗?
- 避免输出多余空格的小技巧
- Asp.net中设置TextBox禁止记忆以前输入的值
- PPC中如何找到正在使用中的网络(转)
- Java基础教程之事件和监听器
- scoket的阻塞、非阻塞、同步和异步