newのコードを追う。
要領が掴めたところで、今度は新規作成(New Software)へのリンクをクリックした後のコードの流れを見てみる。
コントローラsoftwares_controller.rb
newメソッドが呼び出されて、下記のコードが実行される。
def new @software = Software.new ...Softwareモデルから新規登録用の枠を作って、変数@softwareに入れる。 ...renderメソッドが一切ない場合、自動的にnew.rhtmlを利用してページを描画する。(render :action => 'new'は不要) end
ビュー
- new.rhtml
- 新規登録ページ全体の描画をする。
<h1>New software</h1> ...見出し表示 <%= start_form_tag :action => 'create' %> ...項目が連続する入力フォームの始まり。ボタンが押されるとcreateメーッセージを送信する。 <%= render :partial => 'form' %> ..._form.rhtmlを利用して部分的に描画する。(Title、Description、Urlの入力フォームを描画する。) <%= submit_tag "Create" %> ...「Create」ボタンを表示する。 <%= end_form_tag %> ...連続する入力フォーム終了。 <%= link_to 'Back', :action => 'list' %> ...Backと表示して、listメソッドへのリンクを張る。
- _form.rhtml
- new.rhtmlから呼び出されて、入力フォームの一部を描画する。
- アンダースコアで始まるrhtmlファイルは、render :partial => 'ファイル名'の形式で利用する。
- 呼び出す時のファイル名に「_」と「.rhtml」は不要。
<%= error_messages_for 'software' %> ...softwareモデルの定義済みのエラーを表示する。 <!--[form:software]--> ...コメントのため何もしない、入力フォームの始まりをコメントしている。 <p><label for="software_title">Title</label><br/> ...テキストフィールドにTitleというラベルを付けて表示する。*1 <%= text_field 'software', 'title' %></p> ...テキストフィールドの表示、入力値は、nameがsoftware[title]で認識される。 <p><label for="software_description">Description</label><br/> ...テキストエリアのラベル、構文的に上と同じ <%= text_area 'software', 'description' %></p> ...テキストエリアの表示、構文的に上と同じ <p><label for="software_url">Url</label><br/> ...テキストフィールドのラベル、構文的に上と同じ <%= text_field 'software', 'url' %></p> ...テキストフィールドの表示、構文的に上と同じ <!--[eoform:software]--> ...コメントのため何もしない、入力フォームの終了をコメントしている。
*1:ラベルについての詳細はこちらに素晴らしいページを発見。(ごく簡単なHTMLの説明)感謝です!