ruby-on-rails - 《敏捷 Web 开发 Rails 4 - 第 11 章》一书中的 Rails 远程调用内部服务器错误 500

标签 ruby-on-rails ajax render button-to

我是 Rails 新手(第五周),目前我正在学习《Agile Web dev with Rails 4》一书。我刚刚读完第 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'

最佳答案

您收到此错误是因为 @cart 为零。在你的 Controller 中销毁方法初始化@cart

def destroy
  @cart = current_cart
  // other logic
end

关于ruby-on-rails - 《敏捷 Web 开发 Rails 4 - 第 11 章》一书中的 Rails 远程调用内部服务器错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25180931/

相关文章:

ruby-on-rails - 仅转换具有回形针样式的特定文件类型的图像

jquery - Ajax新手学习(golang jquery)

php - 如何循环遍历 Twig 数据

javascript - React 组件返回时实际发生了什么?

java - 如何将 birt 图表渲染到流(png、svg)

ruby-on-rails - 使用 Facebooker 在 Rails View 中使用 FBML

ruby-on-rails - Rails 中的分组选择

ruby-on-rails - 为什么长臂猿会抛出 'uninitialized constant Gibbon::API (NameError)'

javascript - 如何在django中提交表单而不刷新?

javascript - Vue.js - 调用 API 并渲染来自子单文件组件的响应