問題点
- せっかく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