前提・実現したいこと
プログラミングの勉強を始めて、3ヶ月くらいの初心者です。
初歩的な質問なのかもしれないですが、目をとしていただけると嬉しいです。
募集の項目を作って、creatアクションで保存し、トップページに表示したいのですが、データベースに保存されず、トップページにも行かず、newのページに戻ってしまいます。ターミナルを見ると、ROLLBACKと出ています。特にエラーなどは出ず、newのページから動かないような状態です。。。
該当のソースコード
[golves_controller.rb] lass GolvesController < ApplicationController before_action :find_golf_params, only: [:show, :edit, :update, :destroy] def index @golf = Golf.all .order("created_at DESC") end def new @golf = Golf.new end def create @golf = Golf.new(golf_params) binding.pry if @golf.save redirect_to root_path else render :new end end
[golf.rb] class Golf < ApplicationRecord extend ActiveHash::Associations::ActiveRecordExtensions belongs_to :users, optional: true belongs_to_active_hash :prefecture belongs_to_active_hash :drive belongs_to_active_hash :meeting_time has_one_attached :image # has_one :purchase, dependent: :destroy with_options presence: true do validates :image validates :title, length: { maximum: 40 } validates :introduction: { maximum: 1000 } validates :play_date validates :meeting_time_id validates :prefecture_id validates :course_name validates :drive_id validates :price, numericality: { only_integer: true, greater_than: 0, less_than: 100000 } validates :score end end
[マイグレーションファイル] class CreateGolves < ActiveRecord::Migration[6.0] def change create_table :golves do |t| t.string :title, null: false t.text :introduction, null: false t.date :play_date, null: false t.integer :meeting_time_id, null: false t.integer :prefecture_id, null: false t.string :course_name t.integer :drive_id, null: false t.integer :price, null: false t.references :user, foreign_key: true t.timestamps end end end
[new.html.erb] <div class="items-sell-main"> <h2 class="items-sell-title">募集の詳細を入力</h2> <%= form_with model: @golf, url: golves_path, method: :post, local: true do |f| %> 〜中略〜 <div class="sell-btn-contents"> <%= f.submit "募集する" ,class:"sell-btn" %> <%=link_to 'もどる', root_path, class:"back-btn" %> </div> <%# /下部ボタン %> </div> <% end %>
試したこと
controllerのcreateの下にbinding.pryをかけてparamsの中身を調べてみましたが、全て渡せているようです。
次に、newとsaveの間にbinding.pryを記述してみたら、
[1] pry(#<GolvesController>)> @golf => #<Golf:0x00007f9202ceabf8 id: nil, title: "あ", introduction: "ああ", play_date: nil, meeting_time_id: 4, prefecture_id: 4, course_name: "あああああ", drive_id: 1, price: 20000, user_id: 3, created_at: nil, updated_at: nil, score: 0>
このように、nillの箇所がありました。これが原因なのかとは思ったのですが、なぜnillになっているのか。。。
補足情報(FW/ツールのバージョンなど)
補足で、dateには
<%= f.date_select :play_date, {}, class:"select-box", id:"golf-date" %>
とdate_selectの記述を使っています。
ご回答いただけるとありがたいです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/23 05:45