【发布时间】:2011-11-09 17:46:54
【问题描述】:
我有两个部分 _choose.html.erb 和 _details.html.erb。
我像这样渲染选择:
<div id="choose" class="box" style="padding:10px;" >
<%= render :partial => "choose" %>
</div>
在控制器中我调用了选择方法。
def choose
respond_to do |format|
format.js
end
end
在 choose.js.erb 中我调用以下内容:
$("#choose").replaceWith(<%= escape_javascript(render(:partial => "details"))%>);
但是什么也没发生。细节部分在正确的位置,如果我在页面中呈现它,像这样 "details" %>,弹出它没有问题。但是我无法使用上面的ajax方法交换它。
如果我这样做:
$("#choose").replaceWith("a yaddy yaddy");
“a yaddy yaddy”在选择 div 中呈现。
我错过了什么吗?
我一直在阅读,包括 SO,但无济于事。
更新
响应是 200 或 304。使用萤火虫,我可以看到响应包含部分内容,但这并没有在浏览器中呈现,这很奇怪,但我想我犯了一些我不知道的鬼鬼祟祟的委屈......
更新
在choose.js.erb中:
如果我调用 "$("#choose").html("<%= escape_javascript(render(:partial => "choose", :object => @pages))%>")",则选择部分将使用 pages 实例变量进行更新。
谢谢大家。
【问题讨论】:
-
您可以尝试使用 Firebug(Firefox 插件)或 Safari/Chrome/IE 等价物在浏览器中对其进行调试。这样您就可以准确地看到发送到浏览器的内容。
-
我已经做到了,第一个请求是 200,然后我尝试以下请求是 304(未修改)。但是,部分内容会出现在响应中,但不会在浏览器中呈现。
-
Rails 中集成了 jQuery 吗?或者只是一个标准的 jQuery 和标准的 Rails Prototype 库?换句话说:您的 Gemfile 中是否有“jquery-rails”gem?
-
我没有安装 'jquery-rails' gem,但我的 javascripts 目录中有 Jquery,并且我的 javascripts 中也有 rails.js (UJS)。我的应用程序配置中还有 config.action_view.javascript_expansions[:defaults] = %w(jquery rails application) 。我还需要包含 gem 吗?
-
另外,在 javascripts 目录下没有其他的 javascripts。
标签: jquery ruby-on-rails ajax ruby-on-rails-3 partials