2011-07-09 14 views
2

と私はそれが遠かった私のコンソールに私は、このエラーを与える製品を削除したり、破壊するたびに「オブジェクト」を見つけることができませんでしたは、ID =のActiveRecord :: RecordNotFound

を私はRailsのjQueryのUJSとRAIを使用しています

def show 
    @product = Product.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @product } 
    end 
    end 

def destroy 
    @product = current_user.products.find(params[:id]) #current user deletes own 
    @product.destroy 

    respond_to do |format| 
     format.html { redirect_to(products_url) } 
     format.xml { head :ok } 
    end 
    end 

:私は普通の足場を持っている私の製品コントローラで

ActiveRecord::RecordNotFound in ProductsController#show 

Couldn't find Product with ID=4 

ls-jqueryと私のアプリケーションのレイアウトにcsrf_meta_tagを持っている。私が気づいたのは、破棄リンクをクリックすると、ウィンドウがポップアップして「Are you Sure」と表示されます.OKボタンをクリックすると、奇妙な理由でTWICEがちらつきます。どのように私はこれを修正するのですか?

EDIT - ANSWER:

再インストールがレールjqueryの-UJS>https://github.com/rails/jquery-ujs

あなたは両方のファイルjquery.min.jsjquery.jsを維持する必要があります。私はそれが最小限に抑えたバージョンだと思ったので、jquery.min.jsを削除したが、明らかではない、ここではjqueryの-UJSからの私のすべてのファイルを、次のとおりです。

jquery.js 
    jquery.min.js 
    jquery_ujs.js 
    rails.js # i had to install this manually from the link (or zip file) 
    jquery-ui # i wanted the user interface too 
+0

モデルコードを投稿できますか?それが大きい場合は、Githubの要点へのリンクを置くことができます。 application.jsも見ていただければ幸いです。 – Midwire

+0

それが完了しました、私のapplication.jsは空です、私はまだそれを使用していません。 – LearningRoR

+0

最近、既存のアプリケーションから3.1 rcにアップグレードしましたか?もしそうなら、私はあなたが古いprototype.jsのものをすべてアンインストールしたことを確認します。 –

答えて

1

rails.jsファイルがjavascriptsにあることを確認してください。プロトタイプからjqueryに移動すると、安心できる標準DELETEはもう正しく動作しません。 rails.jsはそれを修正するので、通常通り再び動作します。 Josh Huckabeeの記事はhttp://joshhuckabee.com/jquery-rails-3を参照してください。うまくいけば助けてくれます。

PS:レイアウトにrails.jsが含まれていることも確認してください。このようなもの:

<%= javascript_include_tag 'jquery-1.4.4.min', 'jquery-ui-1.8.7.custom.min', 'rails', 'application' %> 
+0

新しいrails.jsをダウンロードしたのにまだ運がありません。私はすべてのスタイルシートとjavasheetsを有効にしていますが(<%= javascript_include_tag:all、:cache => true、:recursive => true%>)、正しく検出されていてもうまくいきません。製品を削除したときに製品/ IDにリダイレクトされるものがあると思いますが、これをどのように変更するのですか? – LearningRoR

+1

真にリダイレクトしている場合は、 'ruby-debug'を使って見つけることができます。あるいは' destroy'メソッドで 'logger.debug(caller)'のようなログ文を設定できます。 。それがリダイレクトされているなら、あなたはそれを見ることができ、どこから呼ばれたのでしょう。 – Midwire

+1

また、jqueryをインストールしたときにプロトタイプを削除しましたか?これらの同じ手順を実行しましたか:http://stackoverflow.com/questions/5053280/how-to-use-jquery-instead-of-prototype-in​​-a-rails-3-application – Midwire

1

エラーメッセージは、あなたがproductを見つけようとしていると述べていますshowの処理ではid 4です。そこには2つの問題があります。最初は、製品のIDが実際に4でない限り、おそらくnilparams[:id]から取得している可能性があります。もう1つの問題は、あなたがあなたのshowアクションにいて、あなたのdeleteアクションではないということです。これは、ルーティングが間違っているか、http動詞がDELETEからGETに変更されていることを意味します。

ちらつきはおそらく関連する症状ですが、DELETEparamsハッシュを送信していない方法が渡されていません。

+0

「Show、Edit、Destroy」と表示されている通常のスキャフォールドのように、商品/インデックスにあるときに削除します。私のデータベースでは、それも正しい製品と言います、私は問題がインデックスページに留まるべきである間違った場所にリダイレクトしていると信じています。 – LearningRoR

関連する問題