【问题标题】:Implementing AJAX with rjs in Ruby on Rails在 Ruby on Rails 中使用 rjs 实现 AJAX
【发布时间】:2011-07-07 19:48:38
【问题描述】:

假设您想使用 rjs 添加一些 ajax,并且您想要异步添加 html 的元素是局部中的局部,这意味着您的主视图在共享文件夹中呈现局部,然后局部呈现共享文件夹中的另一个部分。当您调用 page.insert_html :bottom, :partial =>... 时,您如何在 .rjs 文件中说明这一点,以及如何在主视图和两个部分中说明这一点?

【问题讨论】:

    标签: javascript ruby-on-rails ajax ruby-on-rails-3 partial-views


    【解决方案1】:

    page.insert_html 不考虑 HTML 的原始源是否是部分的 - 您只需要给它一个 DOM ID(即<div id="foo">),它就可以用作插入的参考点。

    如果您知道要通过 AJAX 插入 HTML 的位置,请使元素具有 id 并将其用作 page.insert_html 的参数


    这是一个例子。假设您有一个呈现以下内容的视图:

    <div id="div_tag_in_home_page">
      <%= render :partial => "shared/container" %>
    </div>
    

    还有这些部分:

    <!-- app/views/shared/_container.html.erb -->
    <div id="container_div">
      <%= render :partial => "shared/sub_container" %>
    </div>
    
    <!-- app/views/shared/_sub_container.html.erb -->
    <div id="sub_container_div">
      Some Content That Needs Appending
    </div>
    

    渲染时会为您提供:

    <div id="div_tag_in_home_page">
      <!-- app/views/shared/_container.html.erb -->
      <div id="container_div">
        <!-- app/views/shared/_sub_container.html.erb -->
        <div id="sub_container_div">
          Some Content That Needs Appending
        </div>
      </div>
    </div>
    

    要使用名为app/views/shared/_additional_content.html.erb 的部分向#sub_conainer_div 添加内容,您可以使用:

    page.insert_html :bottom, 'sub_container_div', :partial => 'shared/additional_content'
    

    【讨论】:

    • 是的,我知道,这就是我将page.insert_html 的结尾留空的原因。我想知道在哪里添加id 到:主页、第一个部分或部分中的部分?
    • 这取决于。哪个部分包含要添加内容的开始 HTML 标记?
    • 嗯,第一个 标签在部分中的部分中。我应该使用部分名称作为“共享/部分”吗?
    • 等一下,我举个例子。
    • 谢谢。我想我解决了id 的问题,但现在突然出现了undefined method 'user' for nil:NilClass,我认为它是部分原因...
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签