0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ビューを使ってエラーメッセージを表示させる

Posted at

このエラーメッセージを真似してみる。

<% 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>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?