渲染更新和replace_html无法在rails 4中工作

时间:2013-11-11 11:48:40

标签: ruby-on-rails ruby ruby-on-rails-4

目前我正在将我的应用程序升级到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 .

1 个答案:

答案 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 %>");

如果结果有用,请告诉我。包含丢失的模板调用之后实际呈现的内容将会很有帮助...它将指示解释的扩展名。