前提・実現したいこと
Railsアプリで文字情報(アドレス)を保存させたいです。
commentモデルにname, commentにaddressカラムを追加して住所情報の保存を試みたのですが、保存できません(他情報は保存できています)。
該当のソースコード
(db/schema.rb) create_table "comments", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| t.bigint "post_id" t.string "name", null: false t.text "comment", null: false #今回追加 t.integer "user_id", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "address" t.index ["post_id"], name: "index_comments_on_post_id" end
(form.html.er) <%= form_for comment do |f| %> <%= f.hidden_field :post_id %> <div class="form-group"> <%= f.label :name, '名前' %> <%= f.text_field :name, class: 'form-control' %> <br/> <%= f.label :comment, 'コメント' %> <%= f.text_area :comment, class: 'form-control', rows: 4 %> <br/> <%= f.label :address, 'アドレス' %> <%= f.text_area :address, class: 'form-control', rows: 1 %> <br/> <%= f.submit '送信', class: 'btn btn-primary' %> </div> <% end %>
(comments_controller.rb) def create comment = Comment.new(comment_params) comment.address = params[:address] #有無で変化なし if comment.save flash[:notice] = 'Comment was posted' redirect_to posts_index_path(comment.post_id) else redirect_to posts_index_path(comment.post_id), flash: { comment: comment, error_messages: comment.errors.full_messages } end end
試したこと
ログを見るとアドレスの送信はできているのですが、受け取れていないように見えます。
[1m[35m (2.2ms)[0m [1m[35m SET NAMES utf8 ,@@SESSION.sql_mode = CONCAT( CONCAT( @@sql_mode ,',STRICT_ALL_TABLES' ) ,',NO_AUTO_VALUE_ON_ZERO' ) ,@@SESSION.sql_auto_is_null = 0 ,@@SESSION.wait_timeout = 2147483[0m [1m[36mComment Load (2.1ms)[0m [1m[34m SELECT `comments`. * FROM `comments` LIMIT 11[0m Started POST "/comments" for 172.25.0.1 at 2020-09-18 19:39:00 +0000 Cannot render console from 172.25.0.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 [1m[35m (5.4ms)[0m [1m[35m SET NAMES utf8 ,@@SESSION.sql_mode = CONCAT( CONCAT( @@sql_mode ,',STRICT_ALL_TABLES' ) ,',NO_AUTO_VALUE_ON_ZERO' ) ,@@SESSION.sql_auto_is_null = 0 ,@@SESSION.wait_timeout = 2147483[0m ↳ /usr/local/bundle/gems/activerecord-5.2.4.3/lib/active_record/log_subscriber.rb:98 Processing by CommentsController#create as HTML Parameters: { "utf8"[0;37m => [0m[0;33m"✓"[0m, "authenticity_token"[0;37m => [0m[0;33m"QaAqb700dblcEHh48r974732MDyhAxuRUuoc1hhH4Q0zbtCoQCUIX0klFsk9ASePIAxAu1AE9T0A0zFpwmP+wA=="[0m, "comment"[0;37m => [0m{ "post_id"[0;37m => [0m[0;33m"1"[0m, "name"[0;37m => [0m[0;33m"7"[0m, "comment"[0;37m => [0m[0;33m"8"[0m, "address"[0;37m => [0m[0;33m"new york"[0m }, "commit"[0;37m => [0m[0;33m"送信"[0m } [1m[36mUser Load (1.9ms)[0m [1m[34m SELECT `users`. * FROM `users` WHERE `users`.`id` = 1 LIMIT 1[0m ↳ app/controllers/application_controller.rb:6 Unpermitted parameter: :address [1m[35m (1.0ms)[0m [1m[35m BEGIN[0m ↳ app/controllers/comments_controller.rb:5 [1m[36mPost Load (0.8ms)[0m [1m[34m SELECT `posts`. * FROM `posts` WHERE `posts`.`id` = 1 LIMIT 1[0m ↳ app/controllers/comments_controller.rb:5 [1m[36mComment Create (1.4ms)[0m [1m[32m INSERT INTO `comments` ( `post_id` ,`name` ,`comment` ,`user_id` ,`created_at` ,`updated_at` ) VALUES ( 1 ,'7' ,'8' ,1 ,'2020-09-18 19:39:06' ,'2020-09-18 19:39:06' )[0m ↳ app/controllers/comments_controller.rb:5 [1m[35m (5.8ms)[0m [1m[35m COMMIT[0m ↳ app/controllers/comments_controller.rb:5 Redirected to http://localhost:3003/posts/index.1 Completed 302 Found in 384ms (ActiveRecord: 23.6ms)
おそらくcontrollerでの保存方法に問題がある気がしますが、解決方法がわかりません。
すみませんが、アドバイスよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/18 23:08 編集
退会済みユーザー
2020/09/19 18:49