2017-11-20 23 views
0

私はRailsを使って簡単なブログアプリケーションを作ろうとしていました。私は "新しい投稿を作成する"、 "投稿を編集する"のような機能を追加しました。削除機能も追加したかったのです。しかし、それは動作しません。私を助けてください!ここでなぜ投稿削除機能が動作しないのですか?

は私の "posts_controller.rb" ファイル

class PostsController < ApplicationController 
    def index 
    @posts = Post.all.order('created_at DESC') 
    end 

    def new 
    @post = Post.new 
    end 

    def create 
    @post = Post.new(post_params) 
    @post.save 

    if @post.save 
     redirect_to @post 
    else 
     render 'new' 
    end 
    end 

    def show 
    @post = Post.find(params[:id]) 
    end 

    def edit 
    @post = Post.find(params[:id]) 
    end 

    def update 
    @post = Post.find(params[:id]) 

    if @post.update(params[:post].permit(:title, :body)) 
     redirect_to @post 
    else 
     render 'edit' 
    end 
    end 

    def destroy 
    @post = Post.find(params[:id]) 
    @post.destroy 

    redirect_to post_path 
    end 

    private 
    def post_params 
    params.require(:post).permit(:title, :body) 
    end 
    end 

"show_html.erb" ファイルです:

<div id="post_content"> 
    <h1 class="title"> 
    <%= @post.title %> 
    </h1> 

    <p class="date"> 
    Submitted <%= time_ago_in_words(@post.created_at) %> Ago 
     | <%= link_to 'Edit', edit_post_path(@post) %> 
     | <%= link_to 'Delete', post_path(@post), method: :delete, 
        data: { confirm: 'Are you sure?' } %> 
    </p> 

    <p class="body"> 
    <%= @post.body %> 
    </p> 
</div> 

そして、それは私にこのエラーました:PostsControllerの番号ショーで のActiveRecord :: RecordNotFoundを 'id' = 7の投稿が見つかりませんでした 抽出元(#22行目):

def show 
    @post = Post.find(params[:id]) 
end 
+0

javascriptエラーのため、要求がGETとして送信されています。 Railsは 'jquery-ujs'を使ってリンクから非GETメソッドリクエストを送信します。ブラウザのコンソールでエラーを確認してください。あなたは '<%= button_to 'Delete'、@ post、method::delete、data:{confirm: '本当ですか?' }%> 'はJSに依存しません。 – max

+0

この質問は毎日現れますが、私は良い重複したターゲットを見つけることができません。何か案は? – max

+0

どうもありがとうございました。私はボタンのソリューションを試してみると、私はあなたが動作しない場合は書き込みます。 –

答えて

1

destroyメソッドでは、削除したばかりのpostshowルートにリダイレクトしています。だからあなたはRecordNotFoundエラーを取得しています。

destroyメソッドでredirect_to post_pathからredirect_to posts_pathに変更して、このエラーがクリアされるかどうかを確認してください。

+0

それは働いた!どうもありがとうございました! –

関連する問題