2016-04-04 7 views
0

Ich benutze ransack für meine Anwendung und versuche, eine Tabelle Kopf sortierbar mit sort_link zu erstellen, aber ich bin fest, wenn ich versuche, die sort_link auf den Tabellenkopf angewendet, der die enthält Wert nicht aus der Tabelle der Datenbank, sondern von der Methode im Modell ...ransack sort_link basiert auf einer Definitionsmethode in Modell

dies ist mein Code

mein Modell

def final_price_with_items 
    self.item_cost + self.final_price 
end 

und ich in meinem Modell einen weiße Liste gesetzt hatte, zu erklären, der andere Tabellenkopf, der den Wert aus der Tabelle der Datenbank.

self.whitelisted_ransackable_attributes = ['number','state', 'cost', 'created_at'] 

mein html

<table class="index" id="listing_shipments" data-hook> 
    <thead> 
    <tr data-hook="admin_shipments_index_headers"> 
     <th><%= sort_link @search, :created_at, Spree::Shipment.human_attribute_name(:created_at) %></th> 
     <th><%= sort_link @search, :number, Spree::Shipment.human_attribute_name(:number) %></th> 
     <th><%= sort_link @search, :state, Spree::Shipment.human_attribute_name(:state) %></th> 
     <th><%= sort_link @search, :cost, Spree::Shipment.human_attribute_name(:cost) %></th> 
     <th><%= sort_link @search, :final_price_with_items, Spree::Shipment.human_attribute_name(:final_price) %></th> 
     <th data-hook="admin_shipments_index_header_actions" class="actions"></th> 
    </tr> 
    </thead> 
    <tbody> 
    <% @shipments.each do |shipment|%> 
     <tr id="<%= spree_dom_id shipment %>" data-hook="admin_shipments_index_rows" class="<%= cycle('odd', 'even')%>"> 
     <td><%= l shipment.created_at.to_date %></td> 
     <td><%= link_to shipment.number, edit_admin_order_path(shipment.order) %></td> 
     <td><span class="state <%= shipment.state.downcase %>"><%= Spree.t("shipment_state.#{shipment.state.downcase}") %></span></td> 
     <td><%= shipment.display_cost.to_html %></td> 
     <td><%= Spree::Money.new(shipment.final_price_with_items, currency: shipment.currency).to_html %></td> 
     <td data-hook="admin_shipments_index_row_actions" class="actions align-center"> 
      <%= link_to_edit_url edit_admin_order_path(shipment.order), :title => "admin_edit_#{dom_id(shipment)}", :no_text => true %> 
     </td> 
     </tr> 
    <% end %> 
    </tbody> 
</table> 

der Tabellenkopf, der zum Sortieren in der weißen Liste der Lage erklärt, da die Tabelle Sendung in der Datenbank diese Spalte hatte, aber die final_price_with_items arbeitet nicht zum Sortieren .. jemand kann mir helfen um dieses Problem zu lösen ?

Antwort

0

Sollte in der Lage sein, es mit einem ransacker zu tun. Ich würde vielleicht die den Namen Ihrer Art Link zu final_price_with_items_sort

Dann in Ihrem Modell dieses Add ändern:

ransacker :final_price_with_items_sort do Arel.sql('item_cost + final_price') end