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

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

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

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

Q&A

解決済

1回答

481閲覧

Rails destroyが出来なくて困っています。

puton

総合スコア5

Ruby on Rails

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

0グッド

0クリップ

投稿2020/04/12 05:17

編集2020/04/12 05:52

前提・実現したいこと

Ruby on Rails初心者です。ツイート投稿サイト作成中で、削除機能を追加したところ
No route matches [GET] "/tweets/:id/destroy"のエラーで、削除機能が実行されません((+_+))

発生している問題・エラーメッセージ

No route matches [GET] "/tweets/41/destroy" Rails.root: /home/ec2-user/environment/pictweet Application Trace | Framework Trace | Full Trace

該当のソースコード

・routes.rb

ruby

1Rails.application.routes.draw do 2 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 3 get '/' => 'tweets#index' 4 get 'tweets/new' => 'tweets#new' 5 post 'tweets/create' => 'tweets#create' 6 get "tweets/:id/edit" => "tweets#edit" 7 post "tweets/:id/update" => "tweets#update" 8 delete "tweets/:id/destroy" => "tweets#destroy" 9end 10

・tweets_controller.rb

ruby

1class TweetsController < ApplicationController 2 def index 3 @tweets = Tweet.all.order(created_at: :desc) 4 end 5 6 7 def new 8 end 9 10 def create 11 @tweet = Tweet.new(text: params[:text]) 12 @tweet.save 13 redirect_to("/") 14 end 15 16 def edit 17 @tweet = Tweet.find(params[:id]) 18 end 19 20 def update 21 @tweet = Tweet.find_by(params[:id]) 22 @tweet.text = params[:text] 23 @tweet.save 24 redirect_to("/") 25 end 26 27 def destroy 28 @tweet = Tweet.find_by(params[:id]) 29 @tweet.destroy 30 redirect_to("/") 31 end 32 33end 34

・index.html.erb

ruby

1<% @tweets.each do |tweet| %> 2 <p><%= tweet.text %></p> 3 <div class="teet-menus"> 4 <%= link_to '編集', "/tweets/#{tweet.id}/edit" %> 5 <%= link_to("削除", "/tweets/#{tweet.id}/destroy",{method: "delete"}) %> 6 </div> 7<% end %>

・aplication.html.erb

ruby

1<!DOCTYPE html> 2<html> 3<head> 4</head> 5<body> 6 <header> 7 <div class="header-logo"> 8 <%= link_to("TweetApp", "/") %> 9 </div> 10 <ul class="header-menus"> 11 <li> 12 <%=link_to("新規投稿","/tweets/new")%> 13 </li> 14 </ul> 15 </header> 16<%= yield %> 17</body> 18</html>

試したこと

routesと、メソッドをPOSTからDELETEに変えた。(が、解決しない…)
その他解決方法を検索してみたが、分からず(_)
アドバイスいただけますと助かります…

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

うーん、現状の問題を解決しただけでは色々と問題がありそうで回答が難しいですね。

ひとまず勉強用のアプリを一つ作ることをおすすめします。

コマンドで
rails new test-tweet-app#新しいアプリを作る
rails g scaffold tweet text:text#同じ構成で作る
rails db:migratge#DBを構築
rails s#アプリ実行

これでできたファイルたちが、routesやcontrollerの適切な書き方となり、それぞれの意味が下記となります。
http://kanjihtmt.github.io/blog/2015/04/02/scaffold/

個人的には一度立ち止まってみたほうが、今回の回答も見つけられますし、あとあと良い結果になるかと思います。

投稿2020/04/12 16:25

no1knows

総合スコア3365

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問