解決したい事
フォームで送った値をストロングパラメーターを使って取得したい。
現状
目標管理アプリを製作中です。(利用環境は、「rails 5.2.3」「ruby 2.5.1」)
まず、新規作成画面から作成しました。このページで入力した値をコントローラーで取得しようとストロングパラメーターを設定したのですが、新規作成ページにアクセスすると以下のエラーが発生しページに入れませんでした。
「LoadError in TargetsController#new」
「Unable to autoload constant PriorityCategory, expected /Users/ren0826nosuke/Desktop/projects/target-app/app/models/priority_category.rb to define it」
ストロングパラメーター定義部分がエラー該当箇所なのですがどこかおかしな点はありますか?
ちなみにform_withを使っています。
データベース(モデル)はTargetモデル(目標の情報を入っている)、Categoryモデル(カテゴリの情報が入っている)、Priority_categoryモデル(優先度の情報が入っている)の3つがあります。
※関係あるかわかりませんが、Bootstrapも使用してます。
試してみた事
ストロングパラメーターの「permit(:target)」部分を消してみた。=>引き続きエラー発生
permitの中の「category」と「priority」を.merge(category:category.name, priority:priority_category.name)と記述を変更してみた。=>変化なし
##コード記述
コントローラーの記述は以下の通りです。(targets_controller.rb)
ruby
1class TargetsController < ApplicationController 2 # before_action :move_to_index, only: [:new] 3 4 def index 5 6 end 7 8 def new 9 @target=Target.new 10 @category=Category.all 11 @priority=Priority_category.all 12 Target.create(target_params) 13 end 14 15 def show 16 17 end 18 19 def create 20 @target = Group.create(target_params) 21 if @target.save 22 redirect_to root_path 23 else 24 render :new 25 end 26 end 27 28 def edit 29 30 end 31 32 def update 33 34 end 35 36 def delete 37 38 end 39 40 private 41 def target_params 42 params.require(:target).permit(:title, :price, :date, :memo, :created_at).merge(targets_category: category.name,priority: priority_category.name) 43 #上記がエラー該当部分です。 44 end 45 46 def move_to_index 47 redirect_to "/" 48 end 49end 50
新規作成ページの記述は以下の通りです。(new.html.erb)
ruby
1<div class="container"> 2 <%= form_with model:@target, local:true do |form| %> 3 <div class="form-group"> 4 <%= form.label :title , "タイトル" %> 5 <%=form.text_field :title ,class:"form-control",placeholder:"タイトル" %> 6 </div> 7 8 <div class="form-group"> 9 <%= form.label :targets_category, "カテゴリ" %><br> 10 <%= form.select :targets_category, @category.map{|category|[category.name,category.id]} %> 11 </div> 12 13 <div class="form-group"> 14 <%= form.label :price , "予算・価格" %> 15 <%=form.text_field :price ,class:"form-control", value:"¥" %> 16 </div> 17 18 <div class="form-group"> 19 <%= form.label :date , "期日" %><br> 20 <%=form.date_select( 21 :date, 22 use_month_numbers: true, 23 start_year: 1998, 24 end_year: (Time.now.year + 100), 25 class:"form-control" 26 )%> 27 </div> 28 29 <div class="form-group"> 30 <%= form.label :memo , "メモ" %> 31 <%=form.text_area :memo ,class:"form-control",placeholder:"メモ" %> 32 </div> 33 34 <div class="form-group"> 35 <%= form.label :priority, "優先度" %><br> 36 <%= form.select :priority, @priority.map{|priority|[priority.name,priority.id]} %> 37 </div> 38 39 <div class="form-group"> 40 <%= form.label :created_at , "作成日" %><br> 41 <%=form.date_select( 42 :created_at, 43 use_month_numbers: true, 44 start_year: 1998, 45 end_year: (Time.now.year + 100), 46 class:"form-control" 47 )%> 48 </div> 49 50 <%=form.submit "作成" ,class:"btn btn-primary btn-lg active"%> 51 52 <% end %> 53</div>
追記
target.rb
ruby
1class Target < ApplicationRecord 2 belongs_to :category 3 belongs_to :priority_category 4 5 validates :title, presence: true 6 validates :price, numericality: { only_integer: true },presence: true 7end
priority_category.rb
ruby
1class Priority_category < ApplicationRecord 2 has_many :targets 3end 4
category.rb
ruby
1class Category < ApplicationRecord 2 has_many :targets 3end 4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/13 13:28
2020/04/13 13:31
2020/04/13 13:39
2020/04/13 13:44 編集
2020/04/13 13:47
2020/04/14 03:00 編集
2020/04/14 03:03
2020/04/14 03:22
2020/04/14 04:32