2010-05-17 27 views

Trả lời

2

Không có cách nào công khai tiêu chuẩn theo như tôi biết. Bạn có thể sử dụng một cuộc gọi thô sơ như thế này:

layouts = Dir['app/views/layouts/*'].map {|f| 
    File.basename(f, '.html.erb') # returns 'layout' for 'layout.html.erb' 
} 
+0

Tại sao này downvoted? Mặc dù rõ ràng là không hoàn hảo nhưng thực ra đó là câu trả lời hợp lệ – OneChillDude

+0

Vâng, điều này có hiệu quả hơn đối với tôi hơn template_exists? phía dưới. –

0

Tôi nghĩ rằng cách tốt hơn là nên lưu trữ các giá trị trong một cơ sở dữ liệu, chúng ta hãy một người sử dụng chọn từ đó.

Thay vì cố gắng xác minh thông qua những gì đã được đề xuất trong bài trước.

Sử dụng Mô hình bố cục và cho phép người dùng chọn.

23

Bạn có thể sử dụng template_exists? đó là một bí danh cho exists?

Ví dụ: template_exists?("layout_name", "layouts")

+0

Nhận xét của bạn chắc chắn đã chỉ cho tôi (người có cùng câu hỏi với OP) theo đúng hướng. tồn tại? (và template_exists?) là các phương thức trong ActionView :: LookupContext (https://github.com/rails/rails/blob/master/actionpack/lib/action_view/lookup_context.rb). Tôi muốn sử dụng chúng từ ApplicationController của tôi. Có phải là quá sớm? LookupContext hiện tại đã được thiết lập chưa? Làm thế nào tôi có thể truy cập nó từ ApplicationController của tôi? –

+3

Tôi nên thực hiện tìm kiếm trước khi đăng câu hỏi. LookupContext được khởi tạo trong AbstractController :: ViewPaths và có thể được truy cập rõ ràng như lookup_context trong bộ điều khiển của bạn. –

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