【问题标题】:Rails 3.0 / JQuery - Swapping partials on ajax callRails 3.0 / JQuery - 在 ajax 调用上交换部分
【发布时间】: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,但无济于事。

更新

响应是 200304。使用萤火虫,我可以看到响应包含部分内容,但这并没有在浏览器中呈现,这很奇怪,但我想我犯了一些我不知道的鬼鬼祟祟的委屈......

更新

在choose.js.erb中:

如果我调用 "$("#choose").html("&lt;%= escape_javascript(render(:partial =&gt; "choose", :object =&gt; @pages))%&gt;")",则选择部分将使用 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


【解决方案1】:

你能确保你的两个部分都有一个id = "choose" div 吗?如果没有,您的 replaceWith 正在删除它们。你能想要.html("")吗?

【讨论】:

  • partial 都没有选择 div。 _choose.html.erb 在选择 div 中呈现,我尝试用 detials 部分替换这个部分。我也可以使用 .append() 但没有运气。
  • 呜呜呜呜呜呜呜呜呜!有效。我以为我早些时候尝试过,但显然我搞砸了。干杯人。一问,这不是RJS吗?正确的?顺便说一句 .html("") 不是选择 div ....
  • RJS 是一种较旧的方法,您实际上使用 Rails 助手插入 javascript。这只是一个 JS 响应。当您谈论.append .html.replaceWith 时,您实际上是在使用jQuery。 replaceWith 实际上是覆盖整个 div 而不仅仅是插入其中。 .html 将您的部分插入其中,并保留它,但将 choose div 保留在周围
  • 我就是这么想的。另一个人说我应该停止使用 RJS,我不是。不管怎样,谢谢你的帮助。
猜你喜欢
  • 2011-06-13
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多