2012-09-01 41 views
0

我有一组导航药片沿着左边垂直堆叠。每次点击一个药丸时,我都希望div“report-html-content”加载控制器操作产生的html内容,对应于:program_reports_path(@program)Rails3 Twitter Bootstrap:异步加载的div

看起来很简单(当然,当然)这里的观点:

<div class="container"> 
    <div class="row"> 
    <div class="span2"> 
     <ul class="nav nav-pills nav-stacked"> 
     <li> 
      <a href="#" data-toggle="pill">Trend lines for all questions</a> 
     </li> 
     <li> 
      <%= link_to "Summary of all questions", program_reports_path(@program), 
       :remote => true, id: "reports-navlist", data: {toggle: "tab"} %> 
     </li> 
     <li class="active"> 
      <a href="#" data-toggle="pill">Trend lines for all questions</a> 
     </li> 
     <li> 
      <a href="#" data-toggle="pill">Details on all questions</a> 
     </li> 
     </ul> 
    </div> 
    <div class="span10" id="report-html-content"> 
    </div> 
    </div> 
</div> 

这里的控制器动作:

​​

它几乎工作。除了要求nav-pill集合执行远程操作:出于某种原因,对其他URL执行操作后,导致选项卡的激活和停用不再有效。

我有两个问题:

1)你能看到我的错误?

2)通过Rails 3和Twitter Bootstrap实现这一点的最佳实践方式是什么,并指出我确实希望点击标签的内容能够通过ajax获取,因为这些报表可能代价高昂。

谢谢!这样

回答

1

覆盖显示事件:

<div class="container"> 
    <div class="row"> 
    <div class="span2"> 
     <ul id="tabs" class="nav nav-pills nav-stacked"> 
     <li> 
      <a href="#" data-toggle="pill">Trend lines for all questions</a> 
     </li> 
     <li> 
      <a href="#" data-toggle="pill" id="reports-navlist">Summary of all questions</a> 
     </li> 
     <li class="active"> 
      <a href="#" data-toggle="pill">Trend lines for all questions</a> 
     </li> 
     <li> 
      <a href="#" data-toggle="pill">Details on all questions</a> 
     </li> 
     </ul> 
    </div> 
    <div class="span10" id="report-html-content"> 
    </div> 
    </div> 
</div> 

<script> 
    $(function() { 
    $('#tabs').bind('show', function(e) { 
     if ($(e.target).attr('id') == 'reports-navlist') 
     $.ajax({ 
      url: '<%= program_reports_path(@program) -%>', 
      data: { toggle: "tab" } 
     }) 
    }); 
    }); 
</script> 

您可以在http://twitter.github.com/bootstrap/javascript.html#tabs

+0

阅读更多关于标签的事件似乎更接近,但将在什么地方走位放那的$就结果到DIV #报告HTML的内容? – pitosalas

+0

明白了:$ .ajax({url:'<%= program_reports_path(@program) - %>', data:{toggle:“tab”}, success:function(html){ $(“div #report-html-content“)。html(html); } }) – pitosalas