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

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

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

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

Q&A

解決済

2回答

773閲覧

Routingエラー No route matches [GET] "/tasks/edit"

YutoKubo

総合スコア13

Ruby on Rails 6

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

0グッド

0クリップ

投稿2021/03/03 06:00

idを含んだルーティングエラーです。ルーティングの書き方は間違っていないと思うのですが、<%= link_to "url"%>の部分の記述が間違っているのでしょうか?初歩的な質問ですがよろしくお願いします。

<index.html.erb>

<h1>TodoApp</h1> <%=link_to 'CREATE TASK', '/tasks/new', class:"btn btn-primary" %> <h2>[TASK LIST]</h2> <% @tasks.each do |task| %> <p>・<%=task.title %> <%=link_to '/tasks/' + task.id.to_s, method: :delete do %> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16"> <path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z"/> <path fill-rule="evenodd" d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z"/> </svg> <%= link_to "edit", "/tasks/#{@task.id}/edit" %> ##### <% end %> </p> <% end %>

<routes.rb>

Rails.application.routes.draw do get 'tasks' => 'tasks#index' get 'tasks/new' => 'tasks#new' post 'tasks/create' => 'tasks#create' delete 'tasks/:id' => 'tasks#destroy' get 'tasks/:id/edit' => 'tasks#edit' ##### post 'tasks/:id/update' => 'tasks#update' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end

<edit.html.erb>

<%= form_with url: "/tasks/@task.id/update", local:true do |f| %> <p><%= f.text_field :title, class: "form-control" %></p> <p><%= f.submit "edit", class: "btn btn-outline-primary" %></p> <% end %>

<tasks.controller.rb>

class TasksController < ApplicationController def index @tasks = Task.all end def new end def create @task = Task.create(title: params[:title]) redirect_to "/tasks" end def destroy @task = Task.find(params[:id]) @task.destroy redirect_to "/tasks" end def edit ####### @task = Task.find(params[:id]) binding.pry end def update @task = Task.find(params[:id]) @task.update(title: params[:title]) redirect_to "/tasks" end end

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

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

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

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

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

maisumakun

2021/03/03 06:55

> No route matches [GET] "/tasks/edit" 当該のエラーは、どの画面でどのような操作をした際に出たものですか?
YutoKubo

2021/03/03 09:43 編集

上記のエラーはlocalhost:3000/tasks/editにアクセスしたときのものですが、 localhost:3000/tasksにアクセスすると<%= link_to "edit", "/tasks/#{@task.id}/edit" %>  この部分がエラーと表示されました。
guest

回答2

0

ベストアンサー

<% @tasks.each do |task| %> なので
<%= link_to "edit", "/tasks/#{task.id}/edit" %>です
<%= link_to "edit", edit_task_path(task)" %>を薦めます。

投稿2021/03/04 13:36

winterboum

総合スコア23333

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

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

YutoKubo

2021/03/04 19:03 編集

ご指摘の通り、resourcesとprefixで指定することで解決しました。 回答してくれた方々ありがとうございました。
guest

0

上記のエラーはlocalhost:3000/tasks/editにアクセスしたときのものですが、

単にアクセスするURLを間違えているだけです。

投稿2021/03/03 11:46

maisumakun

総合スコア145184

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問