DBに保存が少し前まではできていたが、現在保存ボタンを押してもDBに保存できなくなっているのを解決したい
ruby:/routes.rb
1Rails.application.routes.draw do 2 root to: 'cards#index' #トップページへ遷移 3 resources :cards do#7つのアクションの省略 4 collection do 5 get 'search' 6 end 7 resources :categories, only: [:show] 8 end 9 10 11end
ルーティングはこのようにしています。
ruby:/controllers/cards_controller.rb
1class CardsController < ApplicationController 2 before_action :set_card, only: [:edit, :show] 3 before_action :goback, only: [:create, :update, :destroy] 4 def index 5 @cards = Card.all 6 end 7 8 def new 9 @card = Card.new 10 end 11 12 def create 13 Card.create(cards_params) 14 #redirect_to '/cards' 15 end 16 17 def edit 18 #@card = Card.find(params[:id]) 19 end 20 21 def update 22 card = Card.find(params[:id]) 23 card.update(cards_params) 24 #redirect_to '/cards' 25 end 26 27 def destroy 28 card = Card.find(params[:id]) 29 card.destroy 30 #redirect_to '/cards' 31 end 32 33 def show 34 #@card = Card.find(params[:id]) 35 end 36 37 def search 38 @cards = Card.search(params[:keyword]) 39 @keyword = params[:keyword] 40 end 41 42 private 43 44 def cards_params 45 params.require(:card).permit(:language, :title, :releasedate, :price, :author, :memo) 46 end 47 48 def set_card 49 @card = Card.find(params[:id]) 50 end 51 52 def goback 53 redirect_to '/cards' 54 end 55end
コントローラーはこのようにしています。
cretaeアクションでカラムを保存できるようにしています
ruby:/models/card.rb
1class Card < ApplicationRecord 2 belongs_to :category, optional: true 3 def self.search(search) #self.クラスメソッド 4 if search != "" 5 Card.where('language LIKE(?) or title LIKE(?)', "%#{search}%","%#{search}%").order('id DESC') #言語、タイトルで検索することが可能 6 else 7 order('Id DESC') 8 end 9 end 10end
ruby:/models/category.rb
1class Category < ApplicationRecord 2 has_many :cards 3end
モデルはこの二つでアソシエーションを付けています。
ruby:/cards/new.html.haml
1.Add 2 .Add__lists 3 %h1 登録する本のデータの追加 4 .Add__lists__list 5 = form_for @card, url: cards_path, method: :post do |f| 6 .Add__lists__list__group 7 = f.label :言語 8 = f.text_field :language, autofocus: true, placeholder: "例)言語を記入", class: "input-default" 9 .Add__lists__list__group 10 = f.label :タイトル 11 = f.text_field :title, autofocus: true, placeholder: "例)タイトル記入", class: "input-default" 12 .Add__lists__list__group 13 = f.label :著者 14 = f.text_field :author, autofocus: true, placeholder: "例)著者を記入", class: "input-default" 15 .Add__lists__list__group 16 = f.label :価格 17 = f.text_field :price, autofocus: true, placeholder: "例)価格を記入", class: "input-default" 18 .Add__lists__list__group 19 = f.label :出版日 20 = f.text_field :releasedate, autofocus: true, placeholder: "例)出版日を記入", class: "input-default" 21 .Add__lists__list__group 22 = f.label :コメント 23 = f.text_area :memo, autofocus: true, placeholder: "例)コメントを記入", class: "input-default" 24 .Add__lists__list__group 25 = f.submit "保存", class: "save-btn" 26 27= render partial: "top"
form_forで保存できるようにしています。保存ボタンを押すとトップページに遷移します。
binding.pryをcretaeアクションのところにかけても、エラーなく、保存ボタンを押すとトップに戻ります。
どなたか教えていただけませんか。宜しくお願いいたいします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/01/06 15:23
2021/01/07 00:00
退会済みユーザー
2021/01/07 02:26
2021/01/07 02:39
退会済みユーザー
2021/01/07 02:49