このエラーメッセージを真似してみる。
<% if @article.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@article.errors.count, "error") %>が原因でこの記事を保存できませんでした</h2>
<ul>
<% @article.errors.each do |error| %>
<li><%= error.full_message %></li>
<% end %>
</ul>
</div>
<% end %>
出典
エラーが起きた
@userがnilになっているかららしい。
保存されていないからこれがnilになったのだろう。
<% if @article.errors.any? %>
が原因だと思う。
@userが存在することを証明できなければいいから
これにした。
<% if @user && @user.errors.any? %>
<%= render("shared/error_form") %>
<% end %>
成功。
rubymineの色を薄くできた。
スタイルシートのファイルで色の四角をクリックすると色の濃さを指定できた。
これは使って良かったかどうかはわからない。
が便利だ。
その他
どこかでerrors.clearが使えそうだが、まだアイデアがこない。
リロードしたら、エラーメッセージを消したい。
これはjavascriptを使うのだろうか?
irb(main):035:0> user = User.new
=>
#<User:0x0000000115e6f4b8
...
.
.
.
irb(main):037:0> user.errors.empty?
=> true
irb(main):038:0> user.save
TRANSACTION (0.2ms) SAVEPOINT active_record_1
User Exists? (0.4ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` IS NULL LIMIT 1
TRANSACTION (0.2ms) ROLLBACK TO SAVEPOINT active_record_1
=> false
irb(main):039:0> user.errors.empty?
=> false
irb(main):040:0> user.errors
=> #<ActiveModel::Errors [#<ActiveModel::Error attribute=password, type=blank, options={}>, #<ActiveModel::Error attribute=name, type=blank, options={}>, #<ActiveModel::Error attribute=name, type=too_short, options={:message=>"1文字以上から10文字以下で入力してください。", :count=>1}>, #<ActiveModel::Error attribute=email, type=blank, options={}>]>
irb(main):041:0>