私はレールを初めて使用し(5週目)、現在「レール4を使用したアジャイルWeb開発」という本で学んでいます。私は 11 章を終えたばかりで、私自身の楽しみとして、カート内のアイテムからすべての数量を破棄するためのリモート呼び出しを追加することを計画しました。問題は、内部エラー メッセージ 500 が表示されることです。
ファイル line_items/_line_item.html.erb にコード「remote: true」を追加しました
...
...
<%= button_to 'Remove Item', line_item, method: :delete, remote: true %>
また、html のリダイレクトを store_path に変更し、line_items_controller.rb に format.js を追加しました。
destroy.js.erb ファイルを作成し、コードを追加しました
$('#cartContainer').html('<%= escape_javascript render(@cart) %>');
@cart が間違っていると思います。しかし、私は理解できず、おそらくホールプロジェクトの概要を完全に失ってしまいました:)
サーバーログは次のとおりです。
Started DELETE "/line_items/105" for 127.0.0.1 at 2014-08-07 12:44:15 +0200
Processing by LineItemsController#destroy as JS
Parameters: {"authenticity_token"=>"ofobuV7Pk1avFiV6KSQ7NHnc/J77PJWWejsKVyg3YLQ=", "id"=>"105"}
LineItem Load (0.1ms) SELECT "line_items".* FROM "line_items" WHERE "line_items"."id" = ? LIMIT 1 [["id", 105]]
CACHE (0.0ms) SELECT "line_items".* FROM "line_items" WHERE "line_items"."id" = ? LIMIT 1 [["id", "105"]]
(0.1ms) begin transaction
SQL (0.4ms) DELETE FROM "line_items" WHERE "line_items"."id" = ? [["id", 105]]
(1.6ms) commit transaction
Rendered line_items/destroy.js.erb (0.9ms)
Completed 500 Internal Server Error in 8ms
ActionView::Template::Error ('nil' is not an ActiveModel-compatible object. It must implement :to_partial_path.):
1: // reload cart after adding item
2: $('#cartContainer').html('<%= escape_javascript render(@cart) %>');
app/views/line_items/destroy.js.erb:2:in `_app_views_line_items_destroy_js_erb__1371414078062466935_70243559055940'
app/controllers/line_items_controller.rb:81:in `destroy'