【问题标题】:Trying to refresh a div that is loaded by index.html.erb with js.erb file in rails尝试使用 rails 中的 js.erb 文件刷新 index.html.erb 加载的 div
【发布时间】: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


    【解决方案1】:

    我认为您应该将要重用的代码分成一个部分,然后在您的 index.html.erb 中呈现该部分。然后,您可以在需要刷新该部分时使用部分。

    【讨论】:

      猜你喜欢
      • 2011-10-31
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      相关资源
      最近更新 更多