2016-07-13 62 views
0

我有一个Ruby on Rails的视图,它工作正常,但我的问题是,它需要相当一段时间才加载页面。这是一些代码:优化前端代码

主要选项卡

<div class="tab-content"> 
       <div class="tab-pane fade in active" id="tabconstituent"> 
        <h3>Constituent Database</h3> 
        <ul class="nav nav-tabs"> 
         <li class="active"><a href="#tabconstinbox" data-toggle="tab">Inbox</a></li> 
         <li><a href="#tabconstsent" data-toggle="tab">Sent</a></li> 

        </ul> 

        <div class="tab-content"> 
         <div role="presentation" class="tab-pane fade in active" id="tabconstinbox"> 
          <div class="container-fluid"> 
           <br /> 
           <div class="col-lg-6 pull-right"> 
           <div class="input-group pull-right" id="searchDrafts"> 
            <input type="text" class="form-control" placeholder="Search for"> 
            <span class="input-group-btn"> 
            <button class="btn btn-default" type="button"> 
             <span class="glyphicon glyphicon-search" aria-hidden="true"></span> 
            </button> 
            </span> 
           </div><!-- /input-group --> 

           <div class="dropdown"> 
            <button class="btn btn-default dropdown-toggle pull-right" type="button" id="dropdownDrafts" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> 
             Filter by 
             <span class="caret"></span> 
            </button> 
            <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> 
            <li><a href="#">Sent to</a></li> 
            <li><a href="#">Subject</a></li> 
            <li><a href="#">Date</a></li> 
            </ul> 
           </div> 
          </div><!-- /.col-lg-6 --> 
          <%= will_paginate @received_messages %> 
           <%= form_tag destroy_many_received_messages_path, method: :post do %> 
          <table class="table table-striped"> 
           <thead> 
            <tr> 
             <th><input type="checkbox" id="checkbox_all" /></th> 
             <th data-field="sender" data-sortable="true">Sender</th> 
             <th data-field="complaint" data-sortable="true">Complaint</th> 
             <th data-field="location" data-sortable="true">Location</th> 
             <th data-field="subject" data-sortable="true">Subject</th> 
             <th data-field="department" data-sortable="true">Department</th> 
             <th data-field="action_taken" data-sortable="true">Action Taken</th> 
             <th data-field="status" data-sortable="true">Status</th> 
             <th data-field="date" data-sortable="true">Date</th> 
            </tr> 
           </thead> 
           <tbody> 

            <% @received_messages.each do |received_message| %> 
             <tr> 
             <td><%= check_box_tag "message_ids[]", received_message.id%></td> 
             <td><%= received_message.name%></td> 
             <td><%= received_message.message %></td> 
             <td><%= received_message.district %> <%= received_message.barangay %></td> 
             <td><%= received_message.subject %></td> 
             <td><% received_message.departments.uniq.each do |department|%> 
               <%= department.name %> 
              <% end -%></td> 
             <td><%= received_message.action_taken %></td> 
             <td><%= received_message.status %></td> 
             <td><%= received_message.created_at %></td> 
             </tr> 
            <% end %> 
           </tbody> 
          </table> 

          <%= submit_tag "Delete", id:"buttonConstInbox_Delete", :class =>"btn btn-primary"%> 
          <%= submit_tag "Update", id:"buttonConstInbox_Update", :class =>"btn btn-primary", remote: true, 'data-toggle' => "modal", 'data-target' => "#constSentModal" %> 
          <%= submit_tag "Attach", id:"buttonConstInbox_Attach", :class =>"btn btn-primary" %> 
          <% end %> 

         </div><!-- /.container-fluid --> 
         </div> 
         <div role="presentation" class="tab-pane fade" id="tabconstsent"> 
          <div class="container-fluid"> 
           <br /> 
           <div class="col-lg-6 pull-right"> 
           <div class="input-group pull-right" id="searchDrafts"> 
            <input type="text" class="form-control" placeholder="Search for"> 
            <span class="input-group-btn"> 
            <button class="btn btn-default" type="button"> 
             <span class="glyphicon glyphicon-search" aria-hidden="true"></span> 
            </button> 
            </span> 
           </div><!-- /input-group --> 

           <div class="dropdown"> 
            <button class="btn btn-default dropdown-toggle pull-right" type="button" id="dropdownDrafts" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> 
             Filter by 
             <span class="caret"></span> 
            </button> 
            <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> 
            <li><a href="#">Sent to</a></li> 
            <li><a href="#">Subject</a></li> 
            <li><a href="#">Date</a></li> 
            </ul> 
           </div> 
          </div><!-- /.col-lg-6 --> 
          <%= will_paginate @send_messages %> 
          <%= form_tag destroy_many_received_messages_path, method: :post do %> 
          <table class="table table-striped"> 
           <thead> 
            <tr> 
             <th><input type="checkbox" id="checkbox_all" /></th> 
             <th data-field="sent_to" data-sortable="true">Sent To</th> 
             <th data-field="message" data-sortable="true">Message</th> 
             <th data-field="status" data-sortable="true">Status</th> 
             <th data-field="date" data-sortable="true">Date</th> 
            </tr> 
           </thead> 

            <tbody> 
            <% @send_messages.each do |send_message| %> 
             <tr> 
             <td><%= check_box_tag "message_ids[]", send_message.id%></td> 
             <td><%= send_message.mobile_number%></td> 
             <td><%= send_message.message %></td> 
             <td><%= send_message.status %></td> 
             <td><%= send_message.created_at %></td> 
             </tr> 
            <% end %> 
           </tbody> 

          </table>  
          <% end %> 
          <button type = "button" id="buttonConstSent_Delete" class = "btn btn-primary">Delete</button> 
         </div><!-- /.container-fluid --> 
         </div> 
        </div><!-- /.tab-content inbox/sent/trash--> 

有5个选项卡是完全相同的,我有一种感觉,为什么它需要一段时间来加载的原因是因为,每次一个加载页面,加载所有内容,而不是我目前使用的选项卡。这成为一个大问题,特别是当我想分页数据和每个页面加载所有标签时。有什么方法可以更好地优化此代码?谢谢。

+0

使其当你需要它你可以加载每个标签使用Ajax,然后。 (见http://stackoverflow.com/questions/27485566/rails-4-ajax-load-content-in-bootstrap-tab) – siegy22

回答

0

对此的最佳解决方案是为每个选项卡设置部分内容,并在单击该选项卡时通过ajax加载这些部分。

首先渲染主页并将remote: true添加到制表符链接。当你点击标签链接渲染部分通过js。

我希望这会帮助你。

+0

谢谢!它运作良好。 –

0

创建一个名为_tab.html.erb的部分,并使用

remote: true 

使用AJAX其实际工作呈现JS代码,你可以做任何你认为是实际的工作流程。

如果你想打电话给你的部分只是

render "tab.html.erb"