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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Q&A

0回答

780閲覧

ActiveRecord::RecordInvalidでバリデーションエラーを解決したい

popi06

総合スコア3

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

0グッド

0クリップ

投稿2021/04/27 06:23

編集2021/04/27 14:24

グループの投稿機能を作っていたのですが、投稿ボタンを押したら、バリデーションに失敗しました。circleを入力してください。と表示されるので、rails cを打ち、Circlepost.firstと入力すると

<Circlepost id: 11, content: "k", user_id: 1, created_at: "2021-04-27 03:31:41", updated_at: "2021-04-27 03:31:41", circle_id: nil>

このようにcircle_idが入っていませんでした。


circle(グループ)
user
circlepost(グループ投稿)


これはルートに問題があるのかコントローラーに問題があるのかわかりません。ルートやコントローラーをいじってみても分からなかったので、どういったように変更すれば良いか教えていただきたいです。

ちなみにグループの投稿はpostlistというページに表示するようにしています。

routes.rb resources :circles do member do get :postlist end end postlist_circle GET /circles/:id/postlist(.:format) circles#postlist
/app/controllers/circleposts_controller.rb class CirclepostsController < ApplicationController before_action :logged_in_user, only: [:create, :destroy] before_action :correct_circle, only: :destroy require 'pry' def create @circle = Circle.find_by(id: params[:circle_id]) @circlepost = current_user.circleposts.build(circlepost_params) @circlepost.circle_id = params[:circle_id] @circlepost.image.attach(params[:circlepost][:image]) if @circlepost.save! flash[:success] = "投稿しました。" redirect_to request.referrer || root_url else @feed_items = current_user.feed.paginate(page: params[:page]) render 'static_pages/home' end end def destroy @circlepost.destroy flash[:success] = "投稿を削除しました。" redirect_to request.referrer || root_url end private def circlepost_params params.require(:circlepost).permit(:content, :image) end def correct_circle @circlepost = current_user.circleposts.find_by(id: params[:id]) redirect_to root_url if @circlepost.nil? end end
belongs_to :circle, optional: true belongs_to :user ユーザーとグループに関連づけています。※ユーザーとグループ側にも関連付けしています。
/app/views/circles/postlist.html.erb <% provide(:title, 'postlist') %> <h3 class="circle-name"><%= @circle.name %></h3> <div class="postlist"> <% if @circle.circle_user?(current_user) %> <section class="circlepost_form"> <%= render 'shared/circlepost_form' %> </section> <% end %> <% if @circle.circleposts.any? %> <ol class="circleposts"> <%= render @circleposts %> </ol> <div class="page"> <%= will_paginate @circleposts, { :previous_label => '&lt 前へ', :next_label => '次へ &gt' } %> </div> <% end %> </div>
/app/views/shared/_circlepost_form.html.erb <%= form_with(model: @circlepost, local: true) do |b| %> <%= render 'shared/error_messages_second', object: b.object %> <div class="field"> <%= b.text_area :content, placeholder: "(例) 活動時間を変更したので確認してください!" %> </div> <%= b.submit "投稿", class: "btn btn-warning" %> <span class="image"> <%= b.file_field :image, accept: "image/jpeg,image/gif,image/png" %> </span> <% end %>

ログ

Started POST "/circleposts" for 126.227.240.207 at 2021-04-27 14:19:34 +0000 Cannot render console from 126.227.240.207! Allowed networks: 126.227.199.43, 127.0.0.0/127.255.255.255, ::1 (1.8ms) SELECT sqlite_version(*) (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC Processing by CirclepostsController#create as HTML Parameters: {"authenticity_token"=>"pgdArkzFtgJKP1AYL0hjpJTnRBpCaQL47awdeH/E1svA88nIqY/RrdXLROzMzH7BW6L9YRcL4aA8rGPx26PkLg==", "circlepost"=>{"content"=>"d"}, "commit"=>"投稿"} User Load (1.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] ↳ app/helpers/sessions_helper.rb:18:in `current_user' Circle Load (0.8ms) SELECT "circles".* FROM "circles" WHERE "circles"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/controllers/circleposts_controller.rb:7:in `create' Completed 422 Unprocessable Entity in 424ms (ActiveRecord: 5.1ms | Allocations: 207665) ActiveRecord::RecordInvalid (バリデーションに失敗しました: Circleを入力してくださ

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

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

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

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

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

maisumakun

2021/04/27 07:04

ビューはどのようになっていますか?
popi06

2021/04/27 08:37

こんにちは。追加しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問