Ruby on Rails
Helperメソッドのチュートリアル

« Scaffoldingのチュートリアル | チュートリアル | はみ出しチュートリアル »

Scaffoldingのチュートリアルでは、アプリケーションを開発する際にscaffoldingがデフォルトアクションを構成するのにどのように役に立つかを見てきました。そして、デフォルトのメソッドのひとつである一人の人の詳細情報を表示するshowメソッドをオーバーライドしました。オーバーライドしたshowメソッドは、listアクションへ戻るリンクのない、そのレコードを削除することもできない不親切なページを表示します。これを解決しましょう。

次のコードをshow.rhtmlに追加してください:

前のページの誤り: show.rhtmlは存在しません。前のバージョンのScaffoldingチュートリアルでは、view.rhtmlファイルの名前をshow.rhtmlに変更し、それにあわせてコントローラもパラメータを除いて次のように変更するよう教えていました:

 def show
    @person=Person.find(@params["id"])
 end

<a href="/friends/list">List</a>
<a href="/friends/destroy/<%=@person.id%>">Delete</a>

これでrailsがURLをどのように書き換えるかを理解できればいいのですが。しかし、より簡単なURL Helperを使う方法があります。

この2行を次のように置き換えることができます:

<%=link_to "List",  :action => "list" %>
<%=link_to "Delete", :action => "destroy", :id => @person.id %>

ほら!リンクができたでしょう。

もし、リンクに違うコントローラを指定する必要がある場合は、同じように:controller => “name”をつかって指定することができます。そのほかのオプションも利用できます。たくさんの便利なヘルパーがあり、それについてはこのドキュメントで読むことができます。

あらかじめ定義されたヘルパーメソッドのいくつかは、フォームで役に立ちます。friendデータを入力するための固有のフォームを組み立てる必要があります。それでは、それを見てみましょう。views/friendsにおいてエディタでedit.rhtmlという名前の新しいファイルを作成してください。そのファイルに以下のコードを置いてください:

<%= form_tag({ :action => "update", :id => @person.id }) %>
<%= hidden_field "person", "id" %>
Name:
<%= text_field "person", "name", "size" => 20 %><br/>

Street:<br />
<%= text_field "person", "street1", "maxlength" => 20 %><br/>
<%= text_field "person", "street2", "maxlength" => 20 %><br/>

City:
<%= text_field "person", "city", "maxlength" => 20 %><br/>

State:
<%= text_field "person", "state", "maxlength" => 2 %><br/>

Zip:
<%= text_field "person", "zip", "maxlength" => 20 %><br/>

<input type="submit" value="Save">
</form>

今度は、friends_controller.rbの中のデフォルトのscaffolding editメソッドをオーバーライドします。– これは必要ではありませんが後のチュートリアルで使います:

def edit
  @person = Person.find(@params["id"])
end

なんと, データを編集できます!

今や基本的な編集ページができました! はみ出しチュートリアルでscaffoldingメソッドの残りを記入しましょう。

« Scaffoldingのチュートリアル | チュートリアル | FramingOutのチュートリアル »

カテゴリ:チュートリアル