質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

2850閲覧

obj.errors.full_messagesを加えるとブラウザをrefreshしないとmodelの作成/更新(CRUD)ができない

innjera

総合スコア132

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2017/06/20 03:27

編集2017/06/20 13:38

シンプルなmodel/データの新規作成(new & update)に関し、new或いはupdateformに偏移したのち、データを入れてsubmitを押しても反応しません。ブラウザを更新(refresh)すると動きます。

  • リストobj.errors.full_messagesviewに加えたことが原因のようでobj.errors.full_messagesを外すと通常通りにページrefreshしなくとも動作します。
  • リストobj.errors.full_messagesは他のviewでも使えるように、partialにしてます。

これを解決する方法はありますでしょうか?或いは、そもそも私のコードの書き方に問題があるのでしょうか?

ruby

1## _errors.html.erb ->複数のmodelで共通して利用 2<% if obj.errors.present? %> 3<div id="errors" class="alert alert-warning text-left mb-3" role="alert"> 4 <h3><strong>エラーがあります。</strong></h3> 5 <ul> 6 <% obj.errors.full_messages.each do |msg| %> 7 <li><%= msg %></li> 8 <% end %> 9 </ul> 10 <% end %> 11</div> 12 13## _form.html.erb(1例です) 14 15<%= render "shared/errors", obj: @user %> 16 17 <div class="form-group text-left"> 18 <%= f.label :user_name, "ユーザーネーム", class:"required" %> 19 <%= f.text_field :user_name, :class => "form-control", placeholder:"ユーザーネーム", required: true %> 20 </div> 21 <div class = "form-group text-left"> 22 <%= f.label :family_name, "氏名" %> 23 <div class="row"> 24 <div class="col-6 pr-0"> 25 <%= f.text_field :family_name, :class => "form-control", placeholder:"氏:family name" %> 26 </div> 27 <div class="col-6 pl-0"> 28 <%= f.text_field :given_name, :class => "form-control", placeholder:"名:first name" %> 29 </div> 30 </div> 31 </div> 32 <div class = "form-group text-left"> 33 <%= f.label :family_name_kana, "氏名(ヨミガナ / Roma)" %> 34 <div class="row"> 35 <div class="col-6 pr-0"> 36 <%= f.text_field :family_name_kana, :class => "form-control", placeholder:"family name" %> 37 </div> 38 <div class="col-6 pl-0"> 39 <%= f.text_field :given_name_kana, :class => "form-control", placeholder:"first name" %> 40 </div> 41 </div> 42 </div> 43 44 <div class = "form-group text-left"> 45 <%= f.label :email, "e-mail", class:"required" %> 46 <%= f.text_field :email, type: "email", class: "form-control", placeholder:"(例)yuu.sagawa@cuty.com", required: true %> 47 </div> 48

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下コードの最終2行の<div><% end %>の順序が逆であることが原因でした。なんともお恥ずかしい限り。

ruby

1<% if obj.errors.present? %> 2<div id="errors" class="alert alert-warning text-left mb-3" role="alert"> 3 <h3><strong>エラーがあります。</strong></h3> 4 <ul> 5 <% obj.errors.full_messages.each do |msg| %> 6 <li><%= msg %></li> 7 <% end %> 8 </ul> 9</div> 10<% end %>

投稿2017/06/20 22:39

innjera

総合スコア132

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問