Tôi đang cố chia nhỏ trang web thành hai phần. Một trong đó nên sử dụng bố trí ứng dụng và một trong đó nên sử dụng bố trí quản trị. Trong application.rb của tôi, tôi đã tạo ra một chức năng như sau:Ruby on Rails - hiển thị bố cục
def admin_layout
if current_user.is_able_to('siteadmin')
render :layout => 'admin'
else
render :layout => 'application'
end
end
Và trong các bộ điều khiển nơi nó có thể là một hay khác tôi đặt
before_filter :admin_layout
này hoạt động tốt đối với một số trang (nơi chỉ của nó văn bản) nhưng đối với những người khác tôi gặp phải lỗi cổ điển:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
Có ai có ý tưởng về những gì tôi bị thiếu không? Tôi nên sử dụng đúng cách hiển thị và bố cục như thế nào?
nếu logged_in? và current_user.is_able_to ('siteadmin') vì current_user có thể là không nếu không đăng nhập! –
@Reuben, đó là một điểm tốt; thêm. – molf
Tôi có các kiểm tra khác trước dòng đó để kiểm tra xem người dùng có đăng nhập hay không. Điều đó thật tuyệt vời, tôi thậm chí không bao giờ nghĩ đến việc gọi một hàm sau khi bố cục. Rất đơn giản và rất hữu ích. Cảm ơn bạn. – RyanJM