0

我有一组沿左侧垂直堆叠的导航药丸。每次单击药丸时,我都希望 div “report-html-content” 加载由控制器操作生成的 html 内容,这些内容对应于:program_reports_path(@program)

看起来很简单(当然,当然。)这是视图:

<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>

这是控制器动作:

  def report1
    @program = Program.find(params[:program_id])
    render :partial => "report1", layout: false
  end

它几乎可以工作。除了由于某种原因要求 nav-pill set 对不同的 URL 执行 remote: true 之外,选项卡的激活和停用不再起作用。

我有两个问题:

1)你能看到我的错误吗?

2) 对我来说,使用 Rails 3 和 Twitter Bootstrap 实现这一目标的最佳实践方式是什么,并指出我绝对希望使用 ajax 获取单击选项卡的内容,因为这些报告的计算成本可能很高。

谢谢!

4

1 回答 1

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阅读有关选项卡事件的更多信息

于 2012-09-01T21:45:51.020 回答