前提・実現したいこと
rails 初心者です。
またお力を貸していただけると助かります。
rails js を使ってタスク共有アプリを作成しています。
実現したいこと
index ページから 編集ボタンをクリック→サブウィンドウで編集画面を開きたい。
編集ボタンを押すとサブウィンドウは表示されるが偏移先の画面でCouldn't find Task with 'id'=:idが起きてしまう。
発生している問題・エラーメッセージ
indexページにて編集ボタンをクリック サブウィンドウは開くが中ペーぞ偏移ができず。
サブウィンドウ ActiveRecord::RecordNotFound in TasksController#edit Couldn't find Task with 'id'=:id index-countroller def edit @task = Task.find(params[:id]) ← ここでエラー end
該当のソースコード
app/countllors/tasks_controller.rb
class TasksController < ApplicationController def index @tasks = Task.all end def show @task = Task.find(params[:id]) end def edit @task = Task.find(params[:id]) ←問題の部分 end def update @task = Task.find(params[:id]) @task.update(params) end def destroy end private def task_params params.require(:task).permit( :name, :tasktext ) end end
app/views/tasks/index.html.haml
.said-content-body - @tasks.each do |task| .task-box .tasks .tasks-name =task.name .tasks-text =task.tasktext .tasks-day 作成日 =task.created_at.strftime("%Y年%m月%d日 %H時%M分") %a{:href => "javascript:window.open('tasks/:id/edit', 'window', $feature);"} = icon('fa', 'tools', class: 'icon')
app/views/tasks/edit.html.haml
移動先のview 未編集 .oowaku .head .main = form_for (/task/{@task.id}/update)do |f| .field = f.label :name, "タスク名" = f.text_field :@task.name .field = f.label :tasktext, "作業内容" = f.text_area :@task.tasktext .actions = f.submit '編集を保存する', class: "btn"
config/routes.rb
Rails.application.routes.draw do root "top#index" resources :tasks, only: [:index, :show, :update, :edit, :destroy] resources :komado,only: [:index, :create, :new, :update] end
試したこと
エラー文Couldn't find Task with 'id'=:idから :idを探すことができなかったと考察。idがnill?
ルートを確認 edit_task GET /tasks/:id/edit(.:format) tasks#edit
試しに /tasks/:id/edit → tasks#editに変えてみるとindexのページが表示される。
edit_task_path(tasks.id)に変更 → routing error
コントローラーの確認
edit
@task = Task.find(params[:id])
end
binding.pryするもエラーで取得できず
https://programming-beginner-zeroichi.jp/articles/45
↑のページを参考にするも解決できませんでした。
補足情報(FW/ツールのバージョンなど)
Rails 5.0.7.2
mysql2 Server version: 5.6.47 Homebrew
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。