前提・実現したいこと
Railsアプリにてmaterial-dashborad-pro
を導入しました。
(以前material-dashborad-pro
の無料コードを使っていましたが今回有料版を導入
レイアウト等はうまく組み込むことができたのですが、
params
を使ったDBへの送信が上手くされなくなり非常に困っております。
無料版の際は問題なく送信されていたのですが有料版を導入したところエラーがでております。
下記に記載していますが導入時assetsの中身しかいじっていないのでなぜパラメータ送信が上手く行かないのかわかりません。
material-dashborad-pro
自体を使っている人は少ないかもしれませんがもし何か原因がおわかりでしたら是非お教えいただけますと幸いです。
新たに導入したもの
https://gyazo.com/fe59d6f495bad04d33c761c8324832cc
https://gyazo.com/2908f2494eb2db0a6d957752b9943094
https://gyazo.com/c421a4c93154fe636acece2b8c662b2a
少し分かりづらいですが、
assets
配下にあるjavascripts
フォルダ配下にjs
フォルダを。
stylesheets
配下にcss
フォルダを置いています。
assets Ljavascript Ljs Lstylesheets Lcss Limages Limg Lscss
発生している問題・エラーメッセージ
fooddairies.new.html.erb
にて送信すると下記エラーが起こります。
エラー文
Started POST "/fooddiaries" for 126.141.241.205 at 2020-12-10 12:30:39 +0000 Cannot render console from 126.141.241.205! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 Processing by FooddiariesController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"ZihK9YnDrjgopg1lYCl+IBsIAjhl3vXLthQN65wcxjY/fzRjfu+95pTAkkuOEaRTOKFbVcAQK3einVNmsJGnjA==", "fooddiary"=>{"timing"=>"昼食", "fooddate_id"=>"31", "user_id"=>"13", "idealweight_id"=>"10"}, "commit"=>"登録"} User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 13 ORDER BY `users`.`id` ASC LIMIT 1 ↳ vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.4.4/lib/active_record/log_subscriber.rb:98 (0.1ms) BEGIN ↳ app/controllers/fooddiaries_controller.rb:28 Fooddate Load (0.2ms) SELECT `fooddates`.* FROM `fooddates` WHERE `fooddates`.`id` = 31 LIMIT 1 ↳ app/controllers/fooddiaries_controller.rb:28 User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 13 LIMIT 1 ↳ app/controllers/fooddiaries_controller.rb:28 Idealweight Load (0.2ms) SELECT `idealweights`.* FROM `idealweights` WHERE `idealweights`.`deleted_at` IS NULL AND `idealweights`.`id` = 10 LIMIT 1 ↳ app/controllers/fooddiaries_controller.rb:28 (1.2ms) ROLLBACK ↳ app/controllers/fooddiaries_controller.rb:28 Completed 500 Internal Server Error in 14ms (ActiveRecord: 2.2ms) NoMethodError (undefined method `*' for nil:NilClass): app/models/fooddiary.rb:18:in `block in <class:Fooddiary>' app/controllers/fooddiaries_controller.rb:28:in `create'
fooddiaries_controller
class FooddiariesController < ApplicationController autocomplete :fooddate, :foodname, full: true def new @fooddiary = current_user.fooddiaries.new if params[:fooddate] && params[:fooddate][:foodname] fooddate_foodname = params[:fooddate][:foodname] @fooddates = Fooddate.where(foodname: fooddate_foodname) else @fooddates = Fooddate.all end end def create @fooddiary = Fooddiary.create(fooddiary_params) redirect_to action: 'index' end private def fooddiary_params params.require(:fooddiary).permit(:gram, :kcal, :protein, :fat, :carbo, :timing, :date, :fooddate_id, :user_id, :idealweight_id) end end
別ページですが、体重入力の際も下記エラーが起こります。
エラー文
weightchanges.html.erb
Started POST "/weightchanges" for 126.141.241.205 at 2020-12-10 12:50:17 +0000 Cannot render console from 126.141.241.205! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 (0.2ms) 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 ↳ vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.4.4/lib/active_record/log_subscriber.rb:98 (0.2ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC ↳ vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.4.4/lib/active_record/log_subscriber.rb:98 Processing by WeightchangesController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"TDzgFc62pIw27877tRuq0tEtEzvpH5JsEoxBA0Owv9QyzW+oa87mZGNY6JCRvj+kc/CiR9V6E50v/S7Mjg7Zqw==", "commit"=>"登録する"} User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 13 ORDER BY `users`.`id` ASC LIMIT 1 ↳ vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.4.4/lib/active_record/log_subscriber.rb:98 Completed 400 Bad Request in 42ms (ActiveRecord: 1.3ms) ActionController::ParameterMissing (param is missing or the value is empty: weightchange): app/controllers/weightchanges_controller.rb:56:in `weightchange_params' app/controllers/weightchanges_controller.rb:34:in `create'
weightchanges_controller
class WeightchangesController < ApplicationController def new unless current_user.weightchanges.where(date: Date.current).present? @weightchange = Weightchange.new else redirect_to action: :index end end def create @weightchange = Weightchange.create(date: weightchange_params[:date], todayweight: weightchange_params[:todayweight], expected_weight: weightchange_params[:expected_weight], user_id: current_user.id, idealweight_id: current_user.idealweight.id) redirect_to action: :index end private def weightchange_params params.require(:weightchange).permit(:date, :todayweight, :expected_weight, :user_id, :idealweight_id) end def weightchange_search_params params.fetch(:search, {}).permit(:date_from, :date_to) end end
補足情報(FW/ツールのバージョンなど)
Rails 5.2.4.4
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
該当箇所となりそうな部分を添付しました。
他にも必要な箇所がありましたら仰ってください。
また重ねてにはなりますが、
assetsディレクトリ箇所しかいじっておりませんが、無料版では問題のなかったパラメータ送信箇所でのエラーが生じております。
何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。