2013-10-04 38 views
1

這是控制器我有訂單的寫入器。will_paginate在相同的實例變量,但爲三個不同的顯示屏

def index 
    if current_user.has_role? :admin 
     @orders = Order.all.paginate(:page => params[:page], :per_page => 5) 
    elsif current_user.has_role? :customer 
     @orders = Order.where(:email => current_user.email).paginate(:page => params[:page], :per_page => 5) 
    elsif current_user.has_role? :white_label 
     @orders = Order.where(:performer_id => (Performer.where(:white_label_id => current_user.white_label.id))).paginate(:page => params[:page], :per_page => 5) 
    else 
     @orders = current_user.performer.orders.paginate(:page => params[:page], :per_page => 5) 
    end 
    @custom_video = CustomVideo.new 
    end 

如你所見,我用will_paginate寶石來做分頁。這是我正在做分頁的瀏覽頁面。

<div class="container"> 
    <div class="span 8"> 
      <% if current_user.has_role? :admin %> 
      <%role =1%> 
      <%elsif current_user.has_role? :performer %> 
      <%role =2%> 
      <% else %> 
      <%role =3%>   
      <% end %> 
     <h3>Awaiting Upload</h3> 
     <table id="order_table" class="table table-hover"> 
      <thead> 
      <tr> 
      <th>id</th> 
       <th>Location</th> 
       <th>Performer</th> 
       <th>Duration</th> 
       <th>Quality</th> 
       <th>Delivery</th> 
       <th>Category</th> 
       <th>Description</th> 
       <th>Total</th> 
       <% if role==2 %> 
       <th>Select a video to upload for the order</th> 
       <%end %> 
       <th></th> 
       <th></th> 
       <th></th> 
      </tr> 
      </thead> 
      <tbody> 
      <% @orders.each do |order| %> 
      <% if order.delivery_time_id=1%> 
      <% var1=14 %> 
      <% else %> 
       <% var1=7 %> 
      <% end %> 
      <% if !CustomVideo.find_by_order_id(order.id) and Time.now <= order.created_at.to_date + var1.days%> 

      <tr> 
       <td> <%= order.id%></td> 
       <td><% if order.location %> 
        <%= order.location.name %> 
       <% end %></td> 
       <td><% if order.performer %> 
        <%= order.performer.first_name %> 
       <% end %></td> 
       <td><% if order.duration %> 
       <%= order.duration.time %> 
       <% end %></td> 
       <td><% if order.quality %> 
       <%= order.quality.name %> 
       <% end %></td> 
       <td><% if order.delivery_time %> 
       <%= order.delivery_time.duration %> 
       <% end %></td> 
       <td><% if order.clip_category %> 
       <%= order.clip_category.name %> 
       <% end %></td> 
       <td><% if order.description %> 
       <%= order.description %> 
       <% end %></td> 
       <td><%= order.total %></td> 

       <% if role==2 %> 
        <td> 
        <%= simple_form_for(@custom_video, :html => { :multipart => true, :id => "fileupload" }) do |f| %> 
        <%= f.error_notification %> 
        <%= f.file_field :path%><br/><br> 
        <%= f.hidden_field :order_id,:value => order.id %> 
        <%=f.button :submit, :value=>"Save", :class=>"btn btn-success" %> 
        <% end %> 
        <script id="template-upload" type="text/x-tmpl"> 
<div class="upload"> 
    {%=o.name%} 
    <div class="progress"><div class="bar" style="width: 0%"></div></div> 
</div> 
</script> 
        <%end%> 
        </td> 
        <td> 
        <% if role==1 %> 
        <%=form_tag({controller: "orders", action: "refund"}, method: "post") do%> 
        <%= hidden_field_tag(:id, order.id) %> 
        <%= submit_tag ("Refund"),:class => "btn btn-success download" %> 
        <% end %> 
       <% end %> 
       </td> 
       <% if can? :show, @order %> 
        <td><%= link_to 'Show', order %></td> 
       <% end %> 
       <% if can? :update, @order %> 
        <td><%= link_to 'Edit', edit_order_path(order) %></td> 
       <% end %> 
       <% if can? :destroy, @order %> 
        <td><%= link_to 'Destroy', order, method: :delete, data: { confirm: 'Are you sure?' } %> 
        </td> 
       <%else %> 
       <% next %> 
       <%end %> 
       <% end -%> 

      <% end %> 
            <%= will_paginate @orders, :param_name => 'awaiting_orders' %> 

      </tbody> 
     </table><br/> 
     <h3>Completed Orders</h3> 
     <table class="table table-hover" id="order_table"> 
      <thead> 
       <tr> 
       <th>id</th> 
       <th>Location</th> 
       <th>Performer</th> 
       <th>Duration</th> 
       <th>Quality</th> 
       <th>Delivery</th> 
       <th>Category</th> 
       <th></th> 
       <th></th> 
       </tr> 
      </thead> 
      <tbody> 
      <% @orders.each do |order| %> 
      <% if order.delivery_time_id=1%> 
      <% var1=14 %> 
      <% else %> 
       <% var1=7 %> 
      <% end %> 
      <% if CustomVideo.find_by_order_id(order.id) and Time.now <= order.created_at.to_date+var1.days%> 
      <tr> 
      <td> <%= order.id%></td> 
       <td><%= order.location.name %></td> 
       <td><%= order.performer.first_name %></td> 
       <td><%= order.duration.time %></td> 
       <td><%= order.quality.name %></td> 
       <td><%= order.delivery_time.duration %></td> 
       <td><%= order.clip_category.name %></td> 
       <td> 
        <% if role==1 %> 
        <%=form_tag({controller: "orders", action: "refund"}, method: "post") do%> 
        <%= hidden_field_tag(:id, order.id) %> 
        <%= submit_tag ("Refund"),:class => "btn btn-success download" %> 
        <% end %> 
       <% end %> 
       </td> 
       <% if can? :show, @order %> 
        <td><%= link_to 'Show', order %></td> 
       <% end %> 
       <% if can? :update, @order %> 
        <td><%= link_to 'Edit', edit_order_path(order) %></td> 
       <% end %> 
       <% if can? :destroy, @order %> 
        <td><%= link_to 'Destroy', order, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
        <%else %> 
       <% next %> 
       <%end %> 
       <% end -%> 
       </tr> 
      <% end %> 
            <%= will_paginate @orders %> 

      </tbody> 

      </table><br/> 
      <h3>Expired Orders</h3> 
     <table class="table table-hover" id="order_table"> 
      <thead> 
       <tr> 
       <th> id</th> 
       <th>Location</th> 
       <th>Performer</th> 
       <th>Duration</th> 
       <th>Quality</th> 
       <th>Delivery</th> 
       <th>Category</th> 
       <th></th> 
       <th></th> 
       </tr> 
      </thead> 
      <tbody> 
      <% @orders.each do |order| %> 
      <% if order.delivery_time_id=1%> 
      <% var1=14 %> 
      <% else %> 
       <% var1=7 %> 
      <% end %> 
      <% if Time.now > order.created_at.to_date+var1.days%> 
      <tr> 
      <td> <%= order.id%></td> 
       <td><%= order.location.name %></td> 
       <td><%= order.performer.first_name %></td> 
       <td><%= order.duration.time %></td> 
       <td><%= order.quality.name %></td> 
       <td><%= order.delivery_time.duration %></td> 
       <td><%= order.clip_category.name %></td> 
       <% if can? :show, @order %> 
        <td><%= link_to 'Show', order %></td> 
       <% end %> 
       <% if can? :update, @order %> 
        <td><%= link_to 'Edit', edit_order_path(order) %></td> 
       <% end %> 
       <% if can? :destroy, @order %> 
        <td><%= link_to 'Destroy', order, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
        <%else %> 
       <% next %> 
       <%end %> 
       <% end -%> 
       </tr> 
      <% end %> 
            <%= will_paginate @orders %> 

      </tbody> 
     </table> 
     <br> 
     <h3>Orders Refunded</h3> 
     <table class="table table-hover" id="order_table"> 
      <thead> 
       <tr> 
       <th> id</th> 
       <th>Location</th> 
       <th>Performer</th> 
       <th>Duration</th> 
       <th>Quality</th> 
       <th>Delivery</th> 
       <th>Category</th> 
       <th></th> 
       <th></th> 
       </tr> 
      </thead> 
      <tbody> 
      <% @orders.each do |order| %> 
      <% if order.refunded %> 
      <tr> 
      <td> <%= order.id%></td> 
       <td><%= order.location.name %></td> 
       <td><%= order.performer.first_name %></td> 
       <td><%= order.duration.time %></td> 
       <td><%= order.quality.name %></td> 
       <td><%= order.delivery_time.duration %></td> 
       <td><%= order.clip_category.name %></td> 
       <% if can? :show, @order %> 
        <td><%= link_to 'Show', order %></td> 
       <% end %> 
       <% if can? :destroy, @order %> 
        <td><%= link_to 'Destroy', order, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
        <%else %> 
       <% next %> 
       <%end %> 
       <% end -%> 
       </tr> 
      <% end %> 
            <%= will_paginate @orders %> 

      </tbody> 
     </table> 
     <br> 

    </div> 
</div> 
<%# link_to 'New Order', new_order_path %> 

問題是這樣的。如果我點擊第一張桌子的第二頁,那麼它也是第二張桌子。我試着給:param_name =>'questions_page'建議here。但是這裏的麻煩是,我沒有爲表格使用不同的實例變量,而是使用同一個變量。我如何解決這個問題?>

回答

0

你幾乎已經回答了你自己的問題。如果您希望它們單獨運行,則需要爲每個表使用單獨的實例變量。

+0

是的。我在控制器中做了這個分離,這並不容易。現在正在爲此工作大約一個小時。一個教訓很難學到。 – Aravind

相關問題