2012-02-16 26 views
5

Tôi có RailsAdmin đang chạy cho ứng dụng Rails 3 có hai mô hình - Bán và Hàng hóa. Có mối quan hệ HABTM giữa hai người. Trong RailsAdmin, khi bán hàng được thêm hoặc chỉnh sửa, danh sách các hàng hóa có sẵn được hiển thị theo cách thông thường. Tuy nhiên, chỉ có cột "tên" của hàng hóa được hiển thị. Tôi có một cột khác có giá trị cần được đưa vào danh sách để tạo bất kỳ ý nghĩa nào. Làm thế nào để tôi thêm nó vào giao diện RailsAdmin?Thêm giá trị cột bổ sung vào danh sách trên RailsAdmin

Tôi hiểu rằng RailsAdmin docs nói rằng các khai báo trường có quyền truy cập vào băm liên kết có chứa bản ghi hiện tại - nhưng tôi không thể tìm thấy bất kỳ ví dụ nào về cách triển khai điều này. Cảm ơn vì bất kì sự giúp đỡ.

Trả lời

5

Tôi muốn đề xuất bạn sử dụng phương pháp nhãn đối tượng tùy chỉnh cho việc này. cấu hình RailsAdmin của bạn có thể trông như thế này:

config.model Merchandise do 
    object_label_method 
    :custom_label 
    end 
end 

Và mô hình ActiveRecord của bạn sẽ chứa một phương pháp để các nhãn dụ:

class Merchandise < ActieRecord::Base 
    def custom_label 
    "#{self.label} #{self.another_column} #{self.another_column2}" 
    end 
end 

này không trả lời câu hỏi của bạn về các biến ràng buộc có sẵn, nhưng tôi hy vọng nó giải quyết câu hỏi gốc. Nếu bạn muốn xem các biến nào có thể truy cập được trong khung nhìn trường tùy chỉnh, bạn có thể xem qua các khung nhìn trong ~/rails_admin/app/views/rails_admin/main /. Grep nhanh cho thấy rằng các ràng buộc [: object] có thể truy cập trong các khung nhìn đó, nhưng IIRC, có một vài biến liên kết khác có thể truy cập được.

+0

Chỉ muốn thêm cho những người khác, object_label_method có thể được bổ sung trực tiếp bên trong các mô hình để bạn có thể giữ tất cả các cấu hình trong mô hình cụ thể (và như là một tiền thưởng thêm, bạn sẽ không phải khởi động lại máy chủ của bạn để thay đổi cấu hình mới). –

5

Bạn đã ít nhất các đối tượng sau đây có sẵn:

bindings[:object] # the actual object 
bindings[:view] # you can access view helpers here 
bindings[:controller] # you can access the controller 

Những gì bạn cần trong trường hợp này là bindings[:object]

Các vấn đề liên quan