平々凡々エンジニア

平凡で難しい悩みを解決

reils 10章で13章で使われる内容が記載されていて詰まった

リスト 10.5: neweditフォーム用のパーシャルapp/views/users/_form.html.erb

<%= form_for(@user) do |f| %>
  <%= render 'shared/error_messages', object: @user %>

  <%= f.label :name %>
  <%= f.text_field :name, class: 'form-control' %>

  <%= f.label :email %>
  <%= f.email_field :email, class: 'form-control' %>

  <%= f.label :password %>
  <%= f.password_field :password, class: 'form-control' %>

  <%= f.label :password_confirmation %>
  <%= f.password_field :password_confirmation, class: 'form-control' %>

  <%= f.submit yield(:button_text), class: "btn btn-primary" %>
<% end %>

この

<%= render 'shared/error_messages', object: @user %>

 

renderの第二引数 object: @userでかなり悩まされました

実際使われてるファイルを見ても@user変数しか使われていなかったです。

app/views/shared/_error_messages.html.erb

>|rails|

<% if @user.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-danger">
      The form contains <%= pluralize(@user.errors.count, "error") %>.
    </div>
    <ul>
    <% @user.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
    </ul>
   </div>
<% end %>

||<

色々調べた結果、13章でerror処理をobjectを使用する実装がありました。

多分この実装の布石なのでしょう。

今記載しなくていい内容だと思いました。おかげで数時間これについて調べました。

その苦労もあってrenderの第二引数がブロックであることとrender先のerbファイルで第二引数のものが使えることがわかりましたので調べて良かったと思いました。

 

13章

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう