如何在Rails 4中使用page.replace_html

5

你好,目前我正在将我的项目从Rails 3.2升级到Rails 4。在升级到Rails 4后,page.replace_html方法无法正常工作。

例如:

在控制器中,如果遇到以下代码:

render :update do |page|

page.replace_html "lease_container", :partial => "/lease/property_pipeline", :locals => {:note_collection => @note}

end

它会抛出以下错误:

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]}

我该如何解决这个问题?是否有使用jQuery的替代方法?

1个回答

3

使用prototype-rails helper gem。

更好的方法是重构代码以使用jQuery。Rails现在鼓励UJS(不侵入式JavaScript)。因此,使用jQuery的完全替代语法可能并不理想。

您可以尝试类似于以下内容:

$("#divid").html("<div>all the html goes here</div>") 

这将使用传递给.html("....")的内容替换<div id="divid">....</div>的内容。
这是jQuery .html()的文档
这个话题有一个很好的RailsCasts Episode#205

根据您的指示,我已经添加了prototype-rails gem并在application.js中添加了以下代码: //= require prototype //= require prototype_ujs //= require effects 但是没有运气,仍然出现相同的错误: //= require dragdrop //= require controls - kannathasan
通过研究测试用例,您可能会找到一些线索。测试用例在这里 - Litmus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接