作って学ぶRuby on Rails Vol.19 パーシャルを活用しよう!

      2016/03/22

Code部

パーシャル

前項までにModelを利用したCRUD の C, R, Uを実装してきましたが、DであるDelete( データ削除 )の前にパーシャルという機能について学習していきます。

 

本来であればCRUDのDまで一気に学習を進められれば良いのですが、Ruby on Railsで用意された、パーシャルという機能を用いる場面が出てきたのでここで解説しておきます。

 

本カリキュラムを学習し始めたあたりで、Ruby on Railsにおける3つの重要事項というのを学習しましたが、その内の1つであるDRY( Don’t repeat Yourself )という項目を覚えているでしょうか。

 

これは、「同じ記述を繰り返さない」という意味なのですが、実は前項で同じ記述を繰り返してしまっています。前項で、app/views/users/edit.html.erb の内容がapp/views/users/new.html.erbのコピーだというところです。

 

そこで利用するのが、パーシャルという機能です。

パーシャルを利用することで、Viewでの似たようなコードを一つにまとめることができます。

 

まず、app/views/users/edit.html.erbとapp/views/users/new.html.erbを開き、内容が同じであることを確認して下さい。

 

 

続いて、app/views/users/ディレクトリ配下に _form.html.erb というファイルを作成して下さい。

※ パーシャルのファイル名の頭にはアンダースコア(アンダーバー)を付加します。

Ruby_on_Rails_パーシャル1

_form.html.erbの内容として、app/views/users/edit.html.erbまたはapp/views/users/new.html.erbの内容をコピーして貼り付けてください。

※3つのファイルの内容が同じになるように。

 

<%= form_for @user do |f| %>
   <div>
     <%= f.text_field :name %>
   </div>
   <div>
     <%= f.select :gender, User.genders.keys.to_a %>
   </div>
   <div>
     <%= f.date_select :birthday, start_year: 1980, end_year: Date.today.year %>
   </div>
   <div>
     <%= f.text_field :hometown %>
   </div>
   <div>
     <%= f.text_area :remarks %>
   </div>
   <div>
     <%= f.submit "送信" %>
   </div>
<% end %>

 

次に、下記のコードをapp/views/users/edit.html.erbと、app/views/users/new.html.erbに記述して下さい。

app/views/users/edit.html.erb

app/views/users/new.html.erb

<%= render partial: “form” %>

上記コードの意味としては、renderというメソッドを使用し、引数にViewの名前を指定することでその内容を表示します。引数のView名には拡張子と名前の先頭のアンダースコア(アンダーバー)を除いた状態で指定して下さい。また、パーシャル対象のファイルが呼び出し側と異なるディレクトリに配置されている場合は、下記のようにapp/views以下のパスで記述します。

 

※今回は呼び出し側と同じディレクトリにパーシャルを作成しているので記述はformだけで問題ありません。

 

<%= render partial: “users/form” %>

ブラウザで確認し、ユーザー情報登録画面とユーザー情報更新画面が表示できれば成功です。もし、表示されない場合やエラーがある場合は記述が間違っている可能性があるので、再度確認して下さい。

 

パーシャルの説明としては以上になりますが、今後もDRYの原則に従い、Viewでの同じような記述はパーシャルを利用して1つにまとめることを意識しましょう。

 

 

NEXT LESSON ☛ 削除機能を実装しよう!

PREV LESSON ☛ ユーザー登録画面を作り込もう!

目次 - Ruby & Ruby on Rails テキスト目次 –

 - Ruby on Rails, プログラミング, プログラミング基礎