学校でつかう課題管理サイトを作成しています。
Qiitaを参考にしながら作成していたコメント機能ですが、データだけが格納されません。ログを見るとそれぞれの値は取得できているみたいなのですがなぜかbigin transaction の直後にrollbackされています。
ソースは下記で、Qiitaの記事ではrailsのバージョンが5.2系なので使えないメソッドなどを使ってエラーになっているのではないかと踏んでいますが自分ではわかりませんでした。
試したこと:
コンソールの方でデータを作成したら無事登録できました。入力した値は
comment_content,homework_id,user_idの3つです。
作成したコメントはきちんとshowの方でも反映されていました。
何か値が足りないのではないかと思い、show.html.erbのソースにもある通りhidden_field_tagでhomework_idの値とuser_idの値を取得していますが変化なしでした。
なにか少しでもわかることがあれば教えていただきたいです。
足りないソースなどあればすぐに追加します。
routes
homework_comments POST /homeworks/:homework_id/comments(.:format) comments#create
schema.rb
ruby
1create_table "comments", force: :cascade do |t| 2 t.text "comment_content" 3 t.integer "user_id" 4 t.integer "homework_id" 5 t.datetime "created_at", null: false 6 t.datetime "updated_at", null: false 7 t.index ["homework_id"], name: "index_comments_on_homework_id" 8 t.index ["user_id"], name: "index_comments_on_user_id" 9 end
homeworks_controller
ruby
1class HomeworksController < ApplicationController 2. 3. 4. 5def show 6 @comments = @homework.comments 7 @comment = Comment.new 8 end 9. 10省略 11. 12
comments_controller
ruby
1class CommentsController < ApplicationController 2 def create 3 @comment = Comment.new(comment_params) 4 @comment.user_id = current_user.id 5 6 if @comment.save 7 redirect_back(fallback_location: root_path) 8 else 9 redirect_back(fallback_location: root_path) 10 end 11 end 12 13 private 14 def comment_params 15 params.require(:comment).permit(:comment_content, :homework_id) 16 end 17end
show.html.erb
html
1 <%= form_for [@homework, @comment] do |c| %> 2 <%= c.text_field :comment_content, class: 'form-control'%> 3 <%= hidden_field_tag "homework_id", @comment.homework_id %> 4 <%= hidden_field_tag "user_id", @comment.user_id %> 5 <%= c.submit "コメント送信", class:'btn btn-success float-right mt-3'%> 6 <% end %> 7 8 <% @comments.each do |comment| %> 9 <%= comment.comment_content %> 10 <% end %>
development.log
log
1Started POST "/homeworks/1/comments" for ::1 at 2020-08-27 02:22:30 +0900 2Processing by CommentsController#create as HTML 3 Parameters: {"utf8"=>"✓", "authenticity_token"=>"gtjv21xMCmfyzBD3i3GndwQZyGwACxIHFywRP+xZbfLWZrXOgckCqhskk5qyyhycSslJPRRTj3a2b2CyCkFcbg==", "comment"=>{"comment_content"=>"gaerga"}, "homework_id"=>"1", "user_id"=>"1", "commit"=>"コメント送信"} 4 [1m[36mUser Load (0.3ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?[0m [["id", 1], ["LIMIT", 1]] 5 [1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m 6 [1m[35m (0.1ms)[0m [1m[31mrollback transaction[0m 7Redirected to http://localhost:3000/homeworks/1 8Completed 302 Found in 6ms (ActiveRecord: 0.5ms)
rails 5.0.7.2
ruby 2.6.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/27 04:04