form_forで投稿するとUnpermitted parameters:が発生し、一部データが保存されません。
DBに情報が保存されません
ご閲覧ありがとうございます。
railsでタスク管理システムを作っています。
タスクを投稿する機能を実装中に以下のエラーが発生しました。
taskカラムに投稿データを保存したいのですが、user_idしか保存されません。
こちらの原因と解決方法を教えていただけたらと思います。
大変お手数をおかけしますがよろしくお願いいたします。
発生している問題・エラーメッセージ
Unpermitted parameters: :utf8, :authenticity_token, :task, :commit
該当のソースコード
tasks/new.html.erb
HTML
1<div class="contents row"> 2 <%= form_for @task, url: "/tasks" do |f| %> 3 <%= f.text_field :task, placeholder: 'タスク'%> 4 5 <%= f.submit "送信" %> 6 <% end %> 7 8 9</div>
routes.rb
ruby
1Rails.application.routes.draw do 2 resources :tasks 3end
tasks_controller
ruby
1 def new 2 @task = Task.new(task: task_params[:task], user_id: current_user.id) 3 end 4 5 def create 6 @task = Task.create(task: task_params[:task], user_id: current_user.id) 7 end 8 9 private 10 def task_params 11 params.permit(:task, :limit_date) 12 end
task.rb
ruby
1class Task < ApplicationRecord 2 belongs_to :user 3end 4
user.rb
ruby
1class User < ApplicationRecord 2 has_many :tasks 3end
create.html.erb
HTML
1<div class="contents row"> 2 <div class="success"> 3 <h3> 4 タスク作成完了しました。 5 </h3> 6 <a class="btn" href="/">投稿一覧へ戻る</a> 7 </div> 8</div> 9
試したこと
はじめはtasks_controllerのcreateメソッド部分を下記としていましたが、DBには何も保存されませんでした。
def create @task = Task.create(task_params) end
そこで下記に変更したところuser_idはDBに保存されるようになりましたが、taskカラムについては保存されないままで、なぜtaskカラムのみ保存されないかは分かりませんでした。
そもそもUnpermitted parameters:のエラーはpermitメソッドをつけると解決される認識でした。
def create @task = Task.create(task: task_params[:task], user_id: current_user.id) end
大変恐れ入りますがよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/14 01:58