如何使用rails中的ajax在一个视图中渲染多个部分?

时间:2015-09-17 10:16:44

标签: ruby-on-rails

在将多个部分渲染到一个特定页面时,我一直在努力解决出现的错误。我的管理面板中有4个不同的按钮,我希望每个按钮都调用一个ajax调用来相应地渲染4个不同的部分。不幸的是,当我试图实现它时,它恰好仅在一个按钮上工作,其余部分根本没有响应。

这是我在控制器中的行动:

  def administration
    @orders = Order.all 
    respond_to do |format|
      format.json 
      format.html 
      format.js
      end
  end

我的观点:

    <% provide(:title, "Administration") %>
     <h1>Manage your site</h1>

<section>
    <div class="tabs tabs-style-bar">
        <nav>
            <ul>
                <li><%= link_to "Masters", {:controller => 'masters', :action => 'index'}, class: "link fa fa-group", :remote => true %>
                </li>
                <li><%= link_to "Orders", {:controller => 'masters', :action => 'administration'}, class: "fa fa-tasks", :remote => true %>
                </li>
                <li><%= link_to "Services", {:controller => 'masters',  :action => 'services'}, class: "fa fa-tags", :remote => true %>
                </li>
                <li><%= link_to "Settings", edit_master_path(current_master), class: "fa fa-cogs" %>
                </li>
            </ul>
        </nav>
    </div><!-- /tabs -->
</section>

<div class="orders"></div>
<div class="masters"></div>
<div class="services"></div>

和我的JS接收器:

var orders_inject = $("<%= j raw render 'orders' %>");
 $('.orders').html(orders_inject);  

所以,请让我全力以赴,因为错误发生已经很久了!

1 个答案:

答案 0 :(得分:0)

希望这对您有用,请尝试此操作并更改渲染文件。我只想假设部分test1test2

$(".orders").replaceWith("<%= j(render('test1') %>");

$(".services").replaceWith("<%= j(render('test2') %>");