目前我正在将我的应用程序升级到rails 4并在许多地方使用RJS。 后来我知道RJS被删除了,它仍然可以通过prototype-rails 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 .
答案 0 :(得分:1)
:rjs
中包含 :handlers
,这很好,但很难知道代码段中还缺少哪些内容。根据{{3}},你还记得更新开发配置吗? config.action_view.debug_rjs = true
中的config/environments/development.rb
?
关于rjs prototype-rails以及如何处理JS渲染,有一个相关的Stackoverflow thread。
根据那个帖子:
至于你的代码,它不工作的原因是它是一个rjs 模板被解释为.js.erb,这可能只是 产生无效的JavaScript。
可能更容易简单地尝试将update.js.rjs
更改为update.js
文件夹中的views/lease
,并按照以下方式使用jQuery:
$('#lease_container').html("<%= escape_javascript render property_pipeline %>");
如果结果有用,请告诉我。包含丢失的模板调用之后实际呈现的内容将会很有帮助...它将指示解释的扩展名。