2010-12-02 18 views
2

Rails 3を使用していて、Destroyアクションが実行されていない理由を確認しようとしています。アクションを破棄していないのはなぜですか?

<%= link_to "Delete", :action => "destroy", :id => article, :method => :delete, :confirm => "are u sure?" %> 

をそしてここArticlesControllerです::私は「削除」リンクをクリックすると

def destroy 

    @article = Article.find(params[:id]) 
    @article.destroy 

    respond_to do |format| 
     format.html { redirect_to articles_url } 
    end 

    end 

が、それはshowアクションに私を取り、次のように解雇私のhtmlが定義されています。なぜそれがわからないのですか?最初の行は、この変更を行うと、あなたはそれが消えてしまいますから、@articleにリダイレクトすることができません

@article = Article.find(params[:id]) 

する必要があることを

答えて

5

あなたlink_toはこのようになります。これはあなたの記事のための正しいURLを生成し、destroyアクションに行きます

<%= link_to "Delete", @article, :method => :delete, :confirm => "are u sure?" %> 

+0

それは魅力的に機能しました!しかし、どうやって説明できますか? –

+0

'link_to'への最初の引数はリンクのテキストで、2番目はリソースへのURL(またはRailsがURLを決定するリソース自体)です。最後の引数は' link_to'のオプションと次にhtmlオプション。 http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_toここでドキュメントを読んでください。 –

0

。おそらくその最後の行をredirect_to articles_urlに置き換える必要があります。全く新しい方法は次のようになります。

def destroy 
    @article = Article.find(params[:id]) 
    @article.destroy 

    respond_to do |format| 
    format.html { redirect_to articles_url} 
    end 
end 

あなたはこのようなものに問題がある場合は、デフォルトのオプションが何であるかを見るためにrails generate scaffold Testで足場モデルを作成してみてください。

+0

ありがとうございます!私は新しいものを見つけるように変更しましたが、まだレコードを削除していません。 –

+0

記事が適切に見つかりましたか? rails consoleを実行し、Article.find行を試し、データベースから何かが戻ってくるかどうかを確認することをお勧めします。 –

+0

ありがとう!私はちょうどコンソールを走らせ、コンソールのレコードを返します。なぜ私はレコードを削除していないのか分かりません。奇妙なことは、私が削除リンクをクリックすると、私は行動を表示することになります。 –

1

あなたのレールアプリのpublicディレクトリにあるjavascriptsディレクトリを削除しましたか?はい、新しいレールのプロジェクトを作成し、実際のプロジェクトでjavascriptsディレクトリをコピーする場合

1

は、あなたのapplication.jsは、この行を含めていることを確認してください。

関連する問題