LoginSignup
5
6

More than 5 years have passed since last update.

Railsのsimple_form_forでエラーメッセージが画面に表示されない時

Last updated at Posted at 2015-10-09

問題点

  • せっかくSimple Form BootStrap対応版いれたのに、エラーメッセージが出ない
  • 醜い赤い、マジでヤバイよヤバイよ画面みたいなActiveRecord::RecordInvalidに左遷される
  • あまりにも自分が初心者すぎる

結論

  • エラー拾ったけど行き場がなかった
  • 拾ったエラーをページに戻してあげればもんだい解決

修正

  • @user.errors.nil?から@user.errors.any?に変更しました。
  • redirect_to new_user_pathからrender :newに変更
  • redirect_to users_pathからrender :indexに変更
  • こっちでないと正しく動かなかった。何故だろう。
  • renderで何かと、パスが変わっても便利
users_controller.rb
  def create
    temp = params.require(:user).permit(:employee_number, :name, :email, :password, :memo, :regular, :leader, :admin, :disable)
    @user = User.create(temp)
    if @user.errors.any?
      render :new
    else
      flash[:success] = temp[:name] + 'を新規登録しました。'
      render :index
    end
  end
new.html.erb
<div class="panel panel-primary">
  <div class="panel-heading">新規登録</div>
  <div class="panel-body">
    <%= simple_form_for @user do |f| %>
        <%= f.error_notification %>
        <%= f.input :name %>
        <%= f.input :email %>
        <%= f.input :password %>
        <%= f.input :employee_number %>
        <%= f.input :memo %>
        <%= f.input :regular  %>
        <%= f.input :leader %>
        <%= f.input :admin %>
        <%= f.input :disable%>
        <div class="form-actions">
          <%= f.submit nil, :class => 'btn btn-primary' %>
          <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
                      users_path, :class => 'btn btn-default' %>
        </div>
    <% end %>

  </div>
</div>

知っている方には当たり前のことなのでしょうが、私はこれで2日つまづきました。
ちゃんといろいろなソースコードを見ていかないと壁に当たりまくりですね。
ちなみに、もっと気持よく書ける方教えて下さい。

unlessか!を使うべきか悩んでいますが…一般的にはどうされるのでしょうか。

参考URL
simple_form not displaying error
rafaelfranca/simple_form-bootstrap
Example application with SimpleForm and Twitter Bootstrap

5
6
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
5
6