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される。という流れになる。
この記事が気に入ったらサポートをしてみませんか?