【发布时间】:2012-03-21 13:11:02
【问题描述】:
我对 Rails 非常陌生,甚至对尝试让 Ajax 运行起来也很陌生。到目前为止,当我通过在 js.erb 中呈现部分内容来单击显示链接时,我已经成功地获得了一个简单的 ajax 调用来更新 div。仅供参考,我正在使用 Rails 3.1。这种类型的东西对我来说没问题:
我的链接:
<td><%= link_to "Show", widget, :remote => true %></td>
在控制器中:
def show
@widget = Widget.find(params[:id])
respond_to do |format|
format.html { redirect_to @widget }
format.js
end
end
在show.js.erb中
$("#myDiv").html("<%= escape_javascript(render('widget_detail')) %>")
在_widget_detail.html.erb中
<div id="myDiv">
<p>
<strong>Address:</strong>
<%= @widget.address %>
</p>
</div>
我现在遇到的问题是我有一个由 index.html.erb 呈现的网站部分。我不知道如何让 index.html.erb 使用 ajax 调用刷新。我认为我还需要知道其他一些 java 脚本,因为除非您根据我的判断调用部分,否则这不起作用。
$("#content").html("<%= escape_javascript(render('index')) %>")
如果我制作另一个部分并转储与 index.html.erb 完全相同的内容,我可以让它做我想做的事情。因此,例如,我可以将其命名为 _junk.html.erb 并执行以下操作:
$("#content").html("<%= escape_javascript(render('junk')) %>")
它会工作得很好。我确定我遗漏了一些简单的东西,或者只需要在 .js.erb 文件中做一些不同的事情,但我不确定是什么。对我来说,我需要在两个地方拥有相同的代码是没有意义的。
【问题讨论】:
标签: jquery ruby-on-rails ruby-on-rails-3 unobtrusive-javascript