0

目前我正在将我的应用程序升级到 rails 4 并在许多地方使用 RJS。后来我才知道 RJS 已删除,并且它仍然可以通过原型导轨 gem 使用。所以我添加了 gem 并包含在 applicaton.js 中,但我仍然遇到同样的问题。

ActionView::MissingTemplate (Missing template lease/update, application/update with {:locale=>[:en], :formats=>[:js, :html, :xml, :html, :text, :js, :css, :ics, :csv, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :handlers=>[:erb, :builder, :raw, :ruby, :rjs]}

示例代码:我们使用旧的扩展名:例如:

def ajax_refer
 render :update do |page|
            page.replace_html  "lease_container", :partial => "/lease/property_pipeline", :locals => {:note_collection => @note, :portfolio_collection => @portfolio_collection}
end
end
my view is property_pipeline.html.erb
my application.js have

//= require prototype
//= require prototype_ujs
//= require effects
//= require dragdrop
//= require controls
//= require jquery
//= require jquery_ujs
//= require_self
//= require_tree .
4

1 回答 1

1

:rjs包含在其中:handlers,这很好,但很难知道片段中还缺少什么。根据原型导轨,您还记得更新开发配置吗?config.action_view.debug_rjs = trueconfig/environments/development.rb

有一个相关的Stackoverflow 线程,关于从 Rails 3.1 开始将 rjs作为默认 JS 库删除以及如何处理 JS 渲染。

根据该线程:

至于您的代码,它不起作用的原因是它是一个被解释为 .js.erb 的 rjs 模板,这很可能只是产生了无效的 JavaScript。

简单地尝试更改文件夹中的update.js.rjsto并按照以下方式使用 jQuery 可能会更容易:update.jsviews/lease

$('#lease_container').html("<%= escape_javascript render property_pipeline %>");

请让我知道这是否有用。包含在缺少模板调用之后实际呈现的内容会很有帮助......它将指示解释的扩展名。

于 2013-12-20T22:07:51.413 回答