質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

711閲覧

showの画面で削除機能の実装がうまくいきません

-maeji-

総合スコア39

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/01/18 07:49

編集2019/01/18 07:49

簡単なCRUD処理を実装したアプリケーションを作成して練習しています。

indexの画面で削除機能は実装できたのですが、"show"の画面で同じコードを編集しても実装されずエラーが出てしまいます。
イメージ説明

<%= link_to '削除', task_path(task.id), method: :delete, class: "btn-sm btn-danger", data: { confirm: "削除してよろしいですか?", commit: "削除する", cancel: "やめる", title: "ご確認ください" } %>

task_path(task.id)の部分で間違っていると思うのですが、どのように編集すれば解決できないです。一緒にみてもらえないでしょうか。

以下、編集した内容です。

show.html.erb

<strong>title : </strong> <%= @task.title %> </p> <p> <strong>content :</strong> <%= @task.content %> </p> <%= link_to '戻る',tasks_path, class: "btn btn-light" %> <%= link_to '削除', task_path(task.id), method: :delete, class: "btn-sm btn-danger", data: { confirm: "削除してよろしいですか?", commit: "削除する", cancel: "やめる", title: "ご確認ください" } %>

index.html.erb

<h1>タスク一覧</h1> <ul> <% @tasks.each do |task| %> <li> title: <%= task.title %> </li> <li> content: <%= task.content %> </li> <%= link_to '詳細', task_path(task) %> <%= link_to '編集', edit_task_path(task), class: "btn-sm btn-primary" %> <%= link_to '削除', task_path(task.id), method: :delete, class: "btn-sm btn-danger", data: { confirm: "削除してよろしいですか?", commit: "削除する", cancel: "やめる", title: "ご確認ください" } %> <% end %> </ul>

tasks_controller.rb

class TasksController < ApplicationController def index @tasks = Task.all end def new @task = Task.new end def show @task = Task.find(params[:id]) end def edit @task = Task.find(params[:id]) end def create @task = Task.new(tasks_param) #@task = Task.new(title: params[:task][:title], content: params[:task][:content]) if @task.save redirect_to tasks_url else render :new end end def update @task = Task.find(params[:id]) if @task.update(tasks_param) redirect_to tasks_path else render :edit end end def destroy @task = Task.find(params[:id]) @task.destroy! redirect_to tasks_path end private def tasks_param params.require(:task).permit(:title, :content) end end

routes.rb

Rails.application.routes.draw do # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html resources :tasks root to: 'tasks#index' end

お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Controller見る限り

<%= link_to '削除', task_path(task.id),

<%= link_to '削除', task_path(@task.id),

に変更すると治ると思います。

Did you mean? @talkと出ていますのでまずはエラー文を理解することから始めましょう!!

投稿2019/01/18 11:02

kyohah

総合スコア96

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

-maeji-

2019/01/18 11:37

ありがとうございます。 なぜindex.html.erbではtask.idなのに、showでは(@task.idなのでしょう? インスタンス変数というやつで、この中にidが入っている、とういうことだと思うのですが、それはindexも同じなんじゃないのかな?って思ってしまっています。 なんでindexでは@がないのでしょう。
kyohah

2019/01/18 11:59

indexには@tasksというtaskの配列になっており、それを@tasks.each do |task|とすることで、`task`という変数が使えるようになります。
-maeji-

2019/01/18 13:50

ちょっとわかってきました。 もう一点教えていただけますか。 @taskと、|task|はこの場合何をさしていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問