2012-04-01 15 views
5

Sto cercando di visualizzare in qualche modo la line items per la order nel active_admin order show page, senza fortuna ..active_admin - visualizzare un elenco di elementi che appartiene ad un altro elemento

qui sono i rapporti tra modelli:

order.rb

class Order < ActiveRecord::Base 
    has_many :line_items, :dependent => :destroy 
    # ... 
    validates :name, :address, :email, :presence => true 
    validates :pay_type, :inclusion => PAYMENT_TYPES 
end 

line_item.rb

class LineItem < ActiveRecord::Base 
    belongs_to :order 
    belongs_to :product 
    belongs_to :cart 

    def total_price 
    product.price * quantity 
    end 

end 

active_admin order.rb

ActiveAdmin.register Order do 

    show do 
    attributes_table :name, :email, :address, :pay_type, :created_at, :updated_at 
    end 
end 

active_admin line_item.rb

class LineItem < ActiveRecord::Base 
    belongs_to :order 
    belongs_to :product 
    belongs_to :cart 

    def total_price 
    product.price * quantity 
    end 

end 

quando clicco spettacolo ordine, si deve visualizzare i prodotti di questo ordine .. In applicazione del mostra il file l'ho fatto con

<%= render @order.line_items %> 

_line_items.html.erb

<!-- START_HIGHLIGHT --> 
<% if line_item == @current_item %> 
    <tr id="current_item"> 
    <% else %> 
<tr> 
<% end %> 
<!-- END_HIGHLIGHT --> 
    <td><%= line_item.quantity %>&times;</td> 
    <td><%= line_item.product.title %></td> 
    <td class="item_price"><%= number_to_currency(line_item.total_price) %></td> 
</tr> 

e degli articoli sono nella pagina, ma in Active_Admin non so come farlo funzionare .. Please help. Grazie per il tuo tempo.

risolti

Grazie a bruno077 sono riuscito a ottenere finalmente i line_items nel show_page ordine in ActiveAdmin

show do |order| 

    panel "Customer details" do 
    attributes_table_for order, :first_name, :last_name, :card_type, :created_at, :ip_address 
    end 

    panel("Products for this order") do 
    table_for(order.line_items) do 
     column "Product" do |item| 
     item.product.title 
     end 
     column "Price" do |item| 
     item.product.price 
     end 
     column "Quantity" do |item| 
     item.quantity 
     end 
    end 
    end 
end 

ho avuto l'ID del prodotto, per ora, ma non è lontano da qui per ottenere quello che voglio. Saluti!

risposta

10

Qualcosa di simile potrebbe funzionare:

ActiveAdmin.register Order do 
    show do |order| 
    div do  
     panel("Items") do 
     table_for(order.line_items) do 
      column :quantity 
      column "Title" do |i| 
      i.product.title 
      end 
      column "Price" do |i| 
      number_to_current(i.total_price) 
      end 
     end 
     end 
    end 
    end 
end 

Un altro esempio estraneo che potrebbe darvi un suggerimento:

# => Show 
    show :title => :date do |gallery| 
    panel "Galería" do 
     attributes_table_for gallery, :name, :description, :date 
    end 

    panel "Fotos" do 
     table_for(gallery.gallery_files) do 
     column "Título", :title 
     column "Fecha", :date 
     column "Foto" do |image| 
      image_tag image.file.url(:thumb).to_s 
     end 
     end 
    end 

    end 
+0

errore di sintassi, inaspettata '{', aspettandosi KEND colonna 'titolo' {prodotto .title} ci sono 4 errori di questo tipo, 1 per ogni "{" potresti darci un'occhiata per favore? Grazie mille almeno per aver provato. – rmagnum2002

+0

crea le colonne, per questa cosa voto solo +1, questo è stato davvero utile, ma ho davvero bisogno di far funzionare queste relazioni in Active Admin. – rmagnum2002

+0

Penso che forse la notazione {} potrebbe non funzionare con ActiveAdmin, aggiornerò la risposta. – bruno077

Problemi correlati