2012-04-01 9 views
5

que estoy tratando de mostrar de alguna manera el line items para la order en el active_admin order show page, sin suerte ..active_admin - mostrar una lista de elementos que pertenece a otro elemento

aquí son las relaciones entre los modelos:

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 

cuando hago clic para mostrar, debe mostrar los elementos de este fin .. En la solicitud de mostrar archivo Lo hice 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> 

y los artículos están en la página, pero en Active_Admin que no saben cómo hacer que funcione .. Por favor, ayuda. Gracias por tu tiempo.

resueltos

Gracias a bruno077 que consiguieron finalmente los line_items en el show_page orden en 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 

me dieron el ID del producto, por ahora, pero no está lejos de aquí para obtener lo que quiero ¡Aclamaciones!

Respuesta

10

Algo como esto podría funcionar:

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 

Otro ejemplo relacionado que podría dar una pista:

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

error de sintaxis, inesperada '{', esperando KEND columna 'título' {product .title} hay 4 errores de este tipo, 1 por cada "{" ¿podría echarle un vistazo, por favor? Muchas gracias al menos por intentarlo. – rmagnum2002

+0

crea las columnas, por esto solo voto +1, esto fue realmente útil, pero realmente necesito que estas relaciones funcionen en Active Admin. – rmagnum2002

+0

Creo que tal vez la notación {} no funcione con ActiveAdmin, actualizaré la respuesta. – bruno077

Cuestiones relacionadas