

バリデーションに失敗した時メッセージを指したいのですが、editアクションは問題なくエラーメッセージが出るのですが、crateアクションの時のみエラーメッセージが出ません。何かわかる方教えていただきたいです。

調べたとろ,local:trueに問題がある方が多かったみたいですが、見たところ問題のないように見えました。

## view

[code]

     <%= form_with(model: @circle, local: true) do |f| %>
          <%= render 'shared/circle_error' %>
          <%= f.label :名前 %>
          <%= f.text_field :name, class: 'form-control' %>
          <%= f.label :応募資格 %>
          <%= f.text_field :qualification, class: 'form-
          <%= f.submit "作成", class: "btn btn-warning" %>
        <% end %>
    
[/code]

## コントローラー

[code]

    def new
        @circle = Circle.new
      end
      
      def create
          @circle = Circle.new(circle_params)
          @circle.owner = current_user
      if  @circle.save!
          @circle_user = CircleUser.new(circle_id: @circle.id, user_id: current_user.id)
          @circle_user.save!
          flash[:success] = "作成しました"
          redirect_to root_url
      else
          render 'new'
      end
      end
      
      def show
        @circle = Circle.find(params[:id])
        @apply = Apply.find_by(@apply)
        @circle_user = CircleUser.find_by(circle: @circle, user: current_user)
      end
      
      def edit
         @circle = Circle.find(params[:id])
      end
      
      def update
        @circle = Circle.find(params[:id])
        if @circle.update(circle_params)
          flash[:success] = "サークル情報が更新されました"
          redirect_to @circle
        else
          render 'edit'
        end
      end
    
[/code]

## /app/views/shared/_circle_error.html.erb

[code]

    <% if @circle.errors.any? %>
      <div id="error_explanation">
        <div class="alert alert-danger">
          入力エラーが <%= pluralize(@circle.errors.count, "件ありました") %>.
        </div>
        <ul>
        <% @circle.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
        </ul>
      </div>
    <% end %>
    
[/code]


CC BY-SA 4.0
2021-05-05T05:25:22.247
75678
2022-07-03T00:01:00.080
2021-05-05T05:28:41.117
3060
44916
question
ruby-on-rails ruby バリデーション
バリデーションのエラーメッセージが表示されない


解決方法がわかりました。原因はsave!の!をつけているのが原因でした。


CC BY-SA 4.0
2021-05-05T14:32:31.160
75683
2021-05-05T14:32:31.160
44916
75678
answer