Rails コース

DRYなコードにするために

これでrestaurantデータの登録(Create)、確認(Read)、編集(Update)、削除(Delete)の一連の機能を実装することができました。ここで改めてrestaurants_controllerを見てみましょう。よく見ると同じコードを何回も書いている部分はありませんか?DRYなコードにするために、コードをブラッシュアップしていきましょう。

対象となるレストランを探すコードはset_restaurantという新しいメソッドを準備し、そのメソッドをbefore_actionで呼び出す形にしました。
また、ここではset_restaurantメソッドはprivateメソッドにしています。privateメソッドは同じクラス内(今回はRestaurantControllerクラス)でのみ呼び出すことができるメソッドです。ルートから直接アクセスする必要がないメソッドはprivateメソッドとするようにしましょう。

さらに、editnewのフォームは全く同じものです。例えばレストランの電話番号や地図など、データの項目が追加された場合、それぞれのフォームを編集するのは非効率です。その際は部分テンプレートの機能を使いましょう。

部分テンプレートは以下のように使います。
1)viewsフォルダ内のrestaurantsフォルダの中に、共通する部分(今回はレストラン情報の登録・編集フォーム)を保存するための新しいファイルを作成します。ファイル名の頭には「_(アンダースコア)」をつけるのが決まりです。ファイルの中身がわかりやすいように_form.html.hamlという名前を付けます。これを部分テンプレートと呼びます。
2)部分テンプレートを呼び出す部分に= render 'form'と記述します。今回はrestaurantsフォルダ内のnew.html.hamledit.html.hamlを以下のように編集します。

この教材はメンバー専用です

メンバー専用の教材にアクセスするには、
ハッカーIDでログインしてください。

or