解決したいこと
料理投稿アプリを作成しており、ancestryでカテゴリ機能を導入しましたが、投稿フォームで記事を投稿してもデータベースに投稿が保存されない不具合が起きています。(エラー文は出てきませんが、送信ボタンを押した後にROLLBACKが起きています)
例)親カテゴリ「食材」、子カテゴリ「肉」、孫カテゴリ「豚肉」のように登録しています。
コード
[posts_controller] def new @post = Post.new @category_parent_array = ["カテゴリ選択"] Category.where(ancestry: nil).each do |parent| @category_parent_array << parent.name end end ~省略~ private def post_params params.require(:post).permit(:title, :body, :image, :material, :category_id).merge(user_id: current_user.id) end
[post.rb] belongs_to :user, foreign_key: 'user_id' has_many :likes has_many :liked_users, through: :likes, source: :user belongs_to :category validates :title, :body, :material, :category_id, presence: :true
[new.html.haml] .post-wrapper__groups--text 投稿フォーム = form_for @post do |f| =f.text_field :title, class: "post-wrapper__groups--title", placeholder: " タイトルを入力してください(10文字以内)" =f.text_area :material, class: "post-wrapper__groups--materials", placeholder: " 材料を入力してください" =f.text_area :body, class: "post-wrapper__groups--recipe", placeholder: " レシピを入力してください" = f.submit '送信', class: 'post-wrapper__groups--submit' = f.label :image, class: "post-wrapper__groups--inputImage" do = icon('fas', 'camera-retro') = f.file_field :image, class: "post_img" .listing-form-box .listing-product-detail__category %span.listing-default--require .listing-select-wrapper .listing-select-wrapper__box = f.select :category_id, @category_parent_array, {}, {class: 'listing-select-wrapper__box--select', id: 'parent_category'} %p カテゴリ選択 ※必須
[binding.pryした際のパラメーター] => <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"w0ZEn95G0dTDtQXVJrUO90/0Eepi4y40NUNDiYuUwzODDmFvcNoamWuNcQJhhTnng0OHE2fbWYzwLT3Iza3kkA==", "post"=><ActionController::Parameters {"title"=>"csc", "material"=>"csdca", "body"=>"dsacdac", "category_id"=>"食材"} permitted: false>, "commit"=>"送信", "category_id"=>"豚肉", "controller"=>"posts", "action"=>"create"} permitted: false>
試したこと
データの投稿は通っていると仮定し、受け取る際のストロングパラメータに問題があると感じたが、上記のように修正してもデータは保存されなかった。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/19 22:52
2020/03/22 05:08
2020/03/22 05:34