前提・実現したいこと
データベースへの保存したい
ここに質問の内容を詳しく書いてください。
railsでカロリー管理アプリを作っています。
中食(作ってあるものを買って持って帰って家で食べる)viewでフォームを作って仮データを入力して
データベースに保存できるかどうかを確認しているのが現段階です。
発生している問題・エラーメッセージ
該当のソースコード
cooked_foods_controller.rb
rails
1class CookedFoodsController < ApplicationController 2 def new 3 @cooked_food = CookedFood.new 4 end 5 6 def create 7 @cooked_food = Cookedfood.new(cooked_food_params) 8 if @cooked_food.save 9 redirect_to root_path 10 else 11 render :new 12 end 13 end 14 15 private 16 def cooked_food_params 17 params.require(:cooked_food).permit(:meal_day, :ganre, :shop_name, :dish_name, :price, :meal_quantity, :calorie, :protein, :carbohydrate, :sugar_content, :lipid, 18 :fiber, :salt).merge(user_id: current_user.id) 19 end
cooked_food.rb
rails
1class CookedFood < ApplicationRecord 2 belongs_to :circle 3end
cooked_foods/new.html.erb
rails
1<div class="cooked-food-box"> 2 <p class="back-to-top"><%= link_to "top", root_path %></p> 3 <div class="cooked-food-frame"> 4 <%= form_with(model: @cooked_food, local: true) do |f| %> 5 <%= f.label :meal_date, "食事日" %> 6 <span class="indispensable-cooked">[2]</span> 7 <%= raw sprintf( 8 f.date_select( 9 :meal_date, 10 class: 'select-meal-day', 11 id:"meal_date", 12 use_month_numbers: true, 13 start_year: (Time.now.year-1), 14 end_year: (Time.now.year), 15 default: Date.today, 16 date_separator: '%s'), 17 '年 ', '月 ') + '日' %> 18 19 20 <div class="meal-time"> 21 <%= f.label :meal_time, '食事時間' %> 22 <span class="indispensable-cooked">[3]</span> 23 <%= f.select :meal_time, {'朝食': 1, '昼食': 2, '夕食': 3, '間食': 4}, { include_blank: '選択してください'}, { class: 'form-control' , required: true } %> 24 </div> 25 26 <div class="indispensable-cooked-food"><p><span class="indispensable-cooked">[4]</span>登録で始める</p></div> 27 28 <div class="cooked-food-field"> 29 <%= check_box_tag("check1") %> 30 <%= label_tag("check1", "成分表示(100gあたりの場合)") %> 31 </div> 32 33 <div class="cooked-food-field"> 34 <p><%= f.label :ganre, 'ジャンル' %></p> 35 <%= f.select :ganre, {'コンビニ': 1, 'お弁当屋': 2, 'ファストフード': 3, 'スーパー': 4, 'ラーメン':5, '中華':6, '洋食':7, '和食':8, 'その他':9}, { include_blank: '選択してください'}, { class: 'form-control' , required: true } %> 36 </div> 37 38 <div class="cooked-food-field"> 39 <%= f.label :shop_name, "店名" %><br> 40 <%= f.text_field :shop_name, autofocus: true %> 41 </div> 42 43 <div class="cooked-food-field"> 44 <%= f.label :dish_name, "料理名・食品名" %><br> 45 <%= f.text_field :dish_name %> 46 </div> 47 48 <div class="cooked-food-field"> 49 <%= f.label :price, "購入金額" %><br> 50 <%= f.text_field :price %><span>円(税込)</span> 51 </div> 52 53 <div class="cooked-food-field"> 54 <%= f.label :meal_quantity, "食品量(重さ)" %><br> 55 <%= f.text_field :meal_quantity %><span>g[ml]</span> 56 </div> 57 58 <div class="cooked-food-field"> 59 <%= f.label :calorie, "カロリー" %><br> 60 <%= f.text_field :calorie %><span>kcal</span> 61 </div> 62 63 <div class="cooked-food-field"> 64 <%= f.label :protein, "タンパク質" %><br> 65 <%= f.text_field :protein %><span>g</span> 66 </div> 67 68 <div class="cooked-food-field"> 69 <%= f.label :carbohydrate, "炭水化物" %><br> 70 <%= f.text_field :carbohydrate %><span>g</span> 71 </div> 72 73 <div class="cooked-food-field"> 74 <%= f.label :lipid, "脂質" %><br> 75 <%= f.text_field :lipid %><span>g</span> 76 </div> 77 78 <div class="cooked-food-field"> 79 <%= f.label :sugar_content, "糖質" %><br> 80 <%= f.text_field :sugar_content %><span>g</span> 81 </div> 82 83 <div class="cooked-food-field"> 84 <%= f.label :fiber, "食物繊維" %><br> 85 <%= f.text_field :fiber %><span>g</span> 86 </div> 87 88 <div class="cooked-food-field"> 89 <%= f.label :salt, "塩分相当量" %><br> 90 <%= f.text_field :salt %><span>g</span> 91 </div> 92 <div class="cooked-food-regist"> 93 <%= f.submit "登録" %> 94 </div> 95 <% end %> 96 97 <div class="indispensable-cooked-food"><p><span class="indispensable-cooked">[4]</span>検索で始める[すでに何か登録がある場合]</p></div> 98 99 <div class="cook-search-container"> 100 <div class= "ganre"> 101 <%= label :ganre, 'ジャンル' %> 102 <%= select :ganre, {'コンビニ': 1, 'お弁当屋': 2, 'ファストフード': 3, 'スーパー': 4, 'ラーメン':5, '中華':6, '洋食':7, '和食':8, 'その他':9}, { include_blank: '選択してください'}, { class: 'form-control' , required: true } %> 103 </div> 104 105 <p class= "cooked-search-container"> 106 <%= text_field :keyword_shop, placeholder: "店舗名", class: "search-input" ,size:"28" %> 107 <%= submit_tag "検索", class: "search-btn" %> 108 </p> 109 110 <p class= "cooked-search-container"> 111 <%= text_field :keyword_food, placeholder: "店舗名", class: "search-input" ,size:"28" %> 112 <%= submit_tag "検索", class: "search-btn" %> 113 </p> 114 115 </div> 116 117 </div> 118</div>
試したこと
cooked_foods_controller.rbで
def create @cooked_food = Cookedfood.new(cooked_food_params) ①⇨@cooked_food = Cooked_foods.new(cooked_food_params) ②⇨@cooked_food = Cookedfoods.new(cooked_food_params) ③⇨@cooked_food = Cooked_food.new(cooked_food_params)
rails
1>> cooked_food_params 2=> <ActionController::Parameters {"ganre"=>"1", "shop_name"=>"セブンイレブン", "dish_name"=>"ワンダ カフェオレ", "price"=>"118", "meal_quantity"=>"370", "calorie"=>"28", "protein"=>"1.2", "carbohydrate"=>"3.8", "sugar_content"=>"3.7", "lipid"=>"0.9", "fiber"=>"0.1", "salt"=>"0.13", "user_id"=>1} permitted: true>
記述の仕方だと思って以上の4つを試しました
他にcontoiier命名規則(ファイル名)
モデル命名規則(モデルクラス名)に調べました
補足情報(FW/ツールのバージョンなど)
Rails 6.0.3.7
active_hash (3.1.0)
devise (4.8.0)
pry-rails (0.3.9)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。