newのコードを追う。

要領が掴めたところで、今度は新規作成(New Software)へのリンクをクリックした後のコードの流れを見てみる。

webブラウザ

一覧表示(list)ページでNew Softwareリンクをクリックすると下記ページが表示される。

http://localhost:3000/softwares/new

コントローラ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の説明)感謝です!