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

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

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

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

2回答

1930閲覧

Railsで削除機能を実装したい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/12/03 10:52

編集2016/12/03 10:52

現在Railsでメモ帳のようなものを作っています
そこで投稿と閲覧はできるのですが削除の方法がわかりません
調べてみたのですがエラーが出てしまいうまくいきません

'/tweet/index(tweet.id)'

の部分が悪いのだと思うのですがどう直したらうまくいきますか?

root.rb

Rails.application.routes.draw do get 'tweets/index' get 'tweets/new' post "tweets" => "tweets#create" get 'tweets/show' end

tweets_controller.rb

controller

1class TweetsController < ApplicationController 2 def index 3 @tweets = Tweet.all 4 end 5 6 def new 7 end 8 9 def show 10 end 11 12 def create 13 @tweet = Tweet.new 14 @tweet.day = params[:tweet][:day] 15 @tweet.title = params[:tweet][:title] 16 @tweet.about = params[:tweet][:about] 17 @tweet.save 18 redirect_to '/tweets/index' 19 end 20 21 def destroy 22 @tweet = Tweet.find(params[:id]) 23 @tweet.destroy 24 redirect_to '/tweet/index' 25 end 26end

index.html.erb

<div class="container"> <% @tweets.each do |tweet| %> <h2><%= tweet.day %></h2> <h1><%= tweet.title %></h1> <p><%= tweet.about %></p> <%= link_to "[Delete]", '/tweet/index(tweet.id)', method: :delete, data: { confirm: "are you sure?" } %> <hr> <% end %> <%= link_to "投稿する", '/tweets/new', class: "btn btn-primary" %> </div>

new.rb

<div class="container"> <div class="form-horizontal"> <%= form_for Tweet.new do |f| %> <%= f.label :day, "日付を入力" %><br> <%= f.text_field :day, :class => "form-control" %><br> <%= f.label :title, "タイトルを入力" %><br> <%= f.text_field :title, :class => "form-control" %><br> <%= f.label :about, "内容を入力" %><br> <%= f.text_area :about, :class => "form-control" %><br> <%= f.submit "投稿", :class => "btn btn-primary" %> <% end %> </div> </div>

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

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

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

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

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

guest

回答2

0

こんにちは
推測ですが回答させていただきます。

おそらくno routesのようなエラーが出ていると思います。
そのためdeleteアクションへのrouteを設定してあげる必要があります。
routes.rbに以下を追記しましょう。

delete 'tweets/delete'

また今書かれているroutesをまとめて以下のように書くことができます。
こちらの書き方の方が一般的なので、こちらで書く癖をつけましょう。

Rails.application.routes.draw do resources 'tweets' end

もしresourcesメソッドについてご存知ないようでしたら以下を確認していただけるとよくわかると思います。
http://www.rubylife.jp/rails/routing/index5.html

また、質問時には該当する部分のエラーメッセージをスクショやコピペで添付していただけるとより正確な回答が得られます!
ご参考になれば幸いです。

投稿2016/12/04 02:23

shunbaba

総合スコア43

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

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

0

ベストアンサー

Rubyでの一般的なやり方を確認するにはrails g scaffold なんたらで作った時にどうなっているかを見ることです。別途railsを作って、rails g scafflod tweet day:date title:string abount:textとしてみてください。できあがったControllerやViewと比べてください。違いがわかると思います。

少なくとも、

  • ルートの所にdeleteが無い。(scaffoldで作るとresourcesでまとめて書かれているので、個別の場合はdeleteを使う必要がある)
  • deleteするlink_toに第2引数で渡すのはモデルそのもので良い。

ということが確認できると思います。

投稿2016/12/03 21:41

raccy

総合スコア21735

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問