###背景
テキストを参考にしながら、ruby on railsでツイッタークローンを作成中。
(デザインはbootstrapを使用)
ユーザー登録機能は作り、View(Users/new.html.erb
)も作成。
ユーザー編集機能(PUT)はまだ作成していないが、
今後作ることを見越して、登録事項に不備があった際に表示するエラーメッセージを
layouts/_error_messages.html.erb
として共通化。
###f.objectを使う理由がよくわからない
下記のコードの際に、テキストだと、ユーザー登録ページの、エラー発生時のメッセージ表示部分(共通化)で
<%= render 'layouts/error_messages', model: f.object %>
と表現するのに、疑問を感じます。
model: @user
でも問題ないと思われるのだが、なぜ f.object
を使わなければいけないのでしょうか?
自分がobjectメソッドについての理解が浅いからだけなのかもしれませんが、
誰かわかる方いらしたら教えていただきたいです。
【Users/new.html.erb
】(一部抜粋)
<%= form_for(@user) do |f| %> <%= render 'layouts/error_messages', model: f.object %> <div class="form-group"> <%= f.label :name, 'Name' %> <%= f.text_field :name, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :email, 'Email' %> <%= f.email_field :email, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :password, 'Password' %> <%= f.password_field :password, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :password_confirmation, 'Confirmation' %> <%= f.password_field :password_confirmation, class: 'form-control' %> </div> <%= f.submit 'Sign up', class: "btn btn-primary btn-block" %> <% end %>
【layouts/_error_messages.html.erb
】
<% if model.errors.any? %> <div class="alert alert-warning"> <ul> <% model.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/29 01:48