ruby/rails ノートその3 form_forについて

<%= form_for(@user) do |f| %>

例えばユーザ登録のさい form_forをこのように記述していた。
paramsを参照するためのキーになり、第二引数でpostのurlを指定。
@userと省略して書かなければ

<%= form_for(:user, uri: users_path) do |f| %>

とも書ける。
省略できるのはUserモデルが存在するから。

また、エラーパーシャルを別に用意してformの直下にrenderする手法がある。

<%= form_for(@user) do |f| %>
    <%= render "layouts/error_messages", model: f.object %>

f は別にxxxでもhogeでもいい。
f.labelやf.submitやf.email_fieldなどと書くことでhtml生成ができる。
f.objectもこれと一緒でformヘルパーメソッドの1つ。

このmodel変数に f.objectを代入しているのは、他のページなどでもエラーパーシャルhtmlを使いたい場合があるから。
f.object == @user
である。

<% if model.errors.any? %>

エラーパーシャルでこの記述があれば、modelには@userが代入されているので、Userモデルのバリデーションに引っかかれば、errorsが生成されrenderされる。という流れになる。

この記事が気に入ったらサポートをしてみませんか?