我向add_item_to_contract发出请求AJAX请求。代码执行更新所需的所有操作,然后我们“响应”。并且浏览器收到500:
respond_to do |f|
f.html { redirect_to :action => "materials_list", :id => @contract.id }
f.js
end
上面上一段代码片段的第一行是sales_team_controller的第49行。如果我评论f.js,没有错误,但我的请求没有使用我的RJS模板(因此它不起作用)。此请求的错误日志的内容包括此错误,此错误也以类似的形式返回到Server 500响应(可以根据请求提供的HTML页面):
ActionView::Template::Error (undefined method `update_details' for #<ActionView::LookupContext:0x007f8ec898d830>):
2: # page.select("div#notice").each { |div| div.hide }
3: #END_HIGHLIGHT
4:
5: page.insert_html(:bottom, "materials_for_contract", :partial => "bm_added")
6:
7: if @material
8: div = "material_#{@material.parent_id.nil? ? @material.id : @material.parent_id}"
app/views/sales_team/add_item_to_contract.rjs:5:in `block in _app_views_sales_team_add_item_to_contract_rjs___3966334417793066345_37361160'
app/views/sales_team/add_item_to_contract.rjs:1:in `_app_views_sales_team_add_item_to_contract_rjs___3966334417793066345_37361160'
app/controllers/sales_team_controller.rb:49:in `add_item_to_contract'
我在.rvm目录上执行了grep,找到了一个update_details实例:
.rvm/gems/ruby-1.9.3-p551/gems/actionpack-3.2.21/lib/action_view/renderer/abstract_renderer.rb:3: delegate :find_template, :template_exists?, :with_fallbacks, :update_details,
旧Rails版本中有多个update_details实例,3.2.21中只有一个实例。此实例也在几年前从Github中删除:https://github.com/rails/rails/pull/6858
我不确定我应该做些什么来解决这个问题。我确实尝试将我的abstract_renderer.rb副本更新为类似于我在Github上发现的副本,但源代码的变化似乎并没有传播到我实际运行的任何副本。
答案 0 :(得分:0)
我停止使用Rails 3.2.21 gem并从Github切换了Rails 3.2稳定分支。