前提・実現したいこと
updateアクションでROLLBACKされてしまうエラーが発生しました。
binding.pryでupdateアクションを止めてエラー内容を確認しましたが、解決方法がわかりませんでした。
どなたかご教示いただけると幸いです。
発生している問題・エラーメッセージ
Started PATCH "/tasks/1" for ::1 at 2020-09-30 14:08:31 +0900 Processing by TasksController#update as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"f5dUC6wLVZ6hUygEIQ/IV+toE8s4key0XmzrEGhs/Uq8Rc0pWB7o86veHsJJfKqCZbxfg+S3wl3lBEZx9eC87w==", "task"=>{"task_name"=>"テスト2", "task_users_id"=>"1", "temp_memo"=>"a", "end_date"=>"2020-09-30", "priority"=>"2", "status"=>"2", "start_date"=>"2020-09-30", "cont_memo"=>"a", "is_cron"=>"2", "is_share"=>"2", "message"=>"a"}, "commit"=>"登録", "id"=>"1"} Task Load (4.7ms) SELECT `tasks`.* FROM `tasks` WHERE `tasks`.`id` = 1 LIMIT 1 ↳ app/controllers/tasks_controller.rb:25 (0.1ms) BEGIN ↳ app/controllers/tasks_controller.rb:27 (0.2ms) ROLLBACK ↳ app/controllers/tasks_controller.rb:27 No template found for TasksController#update, rendering head :no_content Completed 204 No Content in 164ms (ActiveRecord: 5.0ms)
コンソールで@task.erroesを入力した際のソース
[6] pry(#<TasksController>)> @task.errors => #<ActiveModel::Errors:0x00007f80675c9808 @base= #<Task:0x00007f8063e80248 id: 1, task_users_id: 1, task_name: "テスト2", status: "2", message: "2", end_date: Tue, 29 Sep 2020 00:00:00 JST +09:00, temp_memo: "1", start_date: Wed, 30 Sep 2020 00:00:00 JST +09:00, priority: "2", cont_memo: "1", cont_memo: "1", amcestry: nil, created_at: Wed, 16 Sep 2020 09:00:00 JST +09:00, updated_at: Wed, 16 Sep 2020 09:00:00 JST +09:00, category_id: nil, is_cron: "2", is_share: "2">, @details={:category=>[{:error=>:blank}]}, @messages={:category=>["を入力してください"]}> (END)
該当のソースコード
edit.html.erb
<main class="py-4" id="main-content"> <div class="container gt-main-container"> <div class="row justify-content-center"> <div class="col-md-11 body-frame"> <div class="card"> <div class="card-header bg-primary text-white font-weight-bold">登録情報の更新</div> <div class="card-body"> <%= form_with model: @task, local: true do |f| %> <div class="form-group"> <%= f.label :task_name, "タスク名", class: "control-label" %> <span class="badge badge-danger">必須</span> <%= f.text_field :task_name, class: "form-control" %> </div> <div class="form-group"> <%= f.label :users_name, "担当者", class: "control-label" %> <span class="badge badge-danger">必須</span> <%= f.text_field :task_users_id, class: "form-control" %> <%# 変更の必要あり %> </div> <div class="form-group"> <%= f.label :temp_memo, "継続的なメモ", class: "control-label" %> <%= f.text_field :temp_memo, class: "form-control" %> <small type="text" id="memo" class="form-text text-muted"> この欄の内容が更新されない限り、タスクが更新されても内容は変化しません。「40%完了」のようなメモを書くのに適しています。タスク名の後に表示されます。12文字以内。 </small> </div> <div class="form-group"> <%= f.label :end_date, "期日", class: "control-label" %> <div class="input-group"> <%= f.date_field :end_date, class: "flatpickr-input form-control" %> <div class="input-group-append flatpickr-clear-button"> <span class="input-group-text"> <i class="fa fa-times text-danger"></i> </span> </div> </div> </div> <div class="form-group"> <%= f.label :priority, "優先度", class: "control-label" %> <%= f.select :priority, [['高い',1], ['普通',2], ['低い',3]], { selected: 2}, { class: "form-control"} %> </div> <div class="form-group"> <%= f.label :status, "ステータス", class: "control-label" %> <span class="badge badge-danger">必須</span> <%= f.select :status, [['進行中',1], ['終了',2], ['保留',3]], { selected: 1}, { class: "form-control"} %> </div> <div class="form-group"> <%= f.label :start_date, "開始日", class: "control-label" %> <div class="input-group"> <%= f.date_field :start_date, value: Date.today, class: "flatpickr-input form-control" %> <div class="input-group-append flatpickr-clear-button"> <span class="input-group-text"> <i class="fa fa-times text-danger"></i> </span> </div> </div> <small id="start_dateHelp" class="form-text text-muted">未入力の場合は、本日の日付が設定されます。</small> </div> <div class="form-group"> <%= f.label :cont_memo, "一時的なメモ", class: "control-label" %> <%= f.text_field :cont_memo, class: "form-control" %> <small id="tmp_memoHelp" class="form-text text-muted">タスクが更新されると上書きされます。「5分仕事」のようなメモを書くのに適しています。タスク名の前に表示されます。12文字以内。</small> </div> <div class="form-group"> <%= f.label :is_cron, "このタスクは繰り返し実行されますか?", class: "control-label" %> <span class="badge badge-danger">必須</span> <%= f.select :is_cron, [['はい', 1], ['いいえ', 2]], { selected: 2}, { class: "form-control"} %> <small id="is_cronHelp" class="form-text text-muted">「はい」を選択すると、タスクが終了したときに、同じ内容のタスクが新規に作成されます。</small> </div> <div class="form-group"> <%= f.label :is_share, "このカテゴリに属するメンバー共有のタスクとしますか?", class: "control-label" %> <span class="badge badge-danger">必須</span> <%= f.select :is_share, [['はい', 1], ['いいえ', 2]], { selected: 2}, { class: "form-control"} %> <small id="is_shareHelp" class="form-text text-muted">「はい」を選んだ場合、通常のタスクと違い、子タスクはカテゴリに参加するメンバーであれば作ることができるようになります。(メールやSlackなどの通知は行われません。)また、参加メンバーのダッシュボードに常時表示されるようになります。</small> </div> <div class="form-group"> <%= f.label :message, "なにかメッセージがあればここに入力してください。", class: "control-label" %> <%= f.text_field :message, class: "form-control" %> </div> <div class="form-group"> <%= f.submit '登録', class: "btn btn-primary" %> </div> <% end %> </div> </div> </div> </div> </div> </div> </main>
tasks_controller.rb
class TasksController < ApplicationController def index @tasks = Task.all end def new @task = Task.new end def destroy @task = Task.find(params[:id]) @task.destroy redirect_to tasks_path end def edit @task = Task.find(params[:id]) end def create end def update @task = Task.find(params[:id]) binding.pry if @task.update(task_params) redirect_to tasks_path end end def search @tasks = Task.where("task_name LIKE ?", "%#{params[:keyword]}%") respond_to do |format| format.html format.json { render json: @tasks } end end private def task_params params.require(:task).permit(:task_users_id, :task_name, :temp_memo, :end_date, :priority, :status, :start_date, :cont_memo, :is_cron, :is_share, :message) end end
task.rb
class Task < ApplicationRecord has_many :task_users has_many :User, through: :Task_users belongs_to :category end
category.rb
class Category < ApplicationRecord has_many :tasks end
試したこと
@task.errorsで内容確認→エラー内容の解読ができませんでした。
補足情報(FW/ツールのバージョンなど)
Rails 5.2.4.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。