2013-09-28 357 views
7

của Ruby 2.0, Rails 4.0, psql 9,3Làm thế nào để tạo một trang tùy chỉnh trong ActiveAdmin đá quý

Trong tài liệu ActiveAdmin đây là ví dụ:

ActiveAdmin.register_page "My Page" do 
    content do 
    para "Hello World" 
    end 
end 

Tôi nên đặt mã này? Tài liệu hướng dẫn cho biết:

Trong ví dụ trên, một trang mới sẽ được tạo tại/admin/my_page với tiêu đề “Trang của tôi” và nội dung “Hello World”.

Điều này ngụ ý rằng tệp như vậy sẽ được tạo tự động bằng cách nào đó? Tuy nhiên, tôi đã tạo một tệp có tên import.rb trong ứng dụng/quản trị và mục nhập trong menu xuất hiện. Tuy nhiên, tôi không thể sử dụng HTML, vì tệp này là .rb và không .erb. Tôi cho rằng, để có thể sử dụng html, tôi cần tạo một phần và den để hiển thị nó trong phương thức content. Nhưng khi tôi nhìn dưới app/views, không có thư mục admin (chỉ layouts). Điều này có nghĩa là tôi cần phải tạo thư mục admin theo số app/views? Nếu có, tôi nên đặt phần nào - trực tiếp dưới app/views/admin hoặc dưới một thư mục mới app/views/admin/import?

Tôi rất tiếc về các câu hỏi của menu, nhưng tài liệu của ActiveAdmin khá khiêm tốn. Tôi thực sự sẽ đánh giá cao nếu ai đó có thể cung cấp giải thích chi tiết hơn về các bước cần thiết để tạo và thêm nội dung vào trang mới trong ActiveAdmin.

Trả lời

9

Tài liệu có nghĩa là nếu bạn tạo trang tùy chỉnh mới app/admin/my_page.rb, trang này sẽ có sẵn trong URL /admin/my_page (nếu bạn đang sử dụng cấu hình ActiveAdmin mặc định).

Về render của một ERB hoặc HAML partials cho my_page.rb của bạn, bạn có thể làm theo cách này:

ActiveAdmin.register_page "My Page" do 
    content do 
    render :partial => 'about' 
    end 
end 

này sẽ xem xét dưới thư mục app/views/admin/my_page/. Nếu các thư mục không tồn tại, hãy tạo chúng. Ngoài ra, bạn vẫn có thể chỉ định các thư mục khác bằng cách tham chiếu đường dẫn mẫu đầy đủ (ví dụ: shared/sections/about) giống như bạn làm cho bộ điều khiển không phải ActiveAdmin.

+0

Và từ đâu chúng tôi truy cập trang này? –

+2

@NidhinSG: "trang này sẽ có sẵn trong URL/admin/my_page" :-) – kristinalim