2010-08-18 53 views
7

Ví dụ: tôi muốn có thanh bên của tôi có một số nội dung động. Sử dụng phương pháp khác sẽ dẫn tôi đặt mã truy vấn vào Chế độ xem, đây không phải là ý tưởng hay. Tôi muốn giữ bất kỳ truy vấn nào trong Bộ điều khiển của mình.Bố cục động với bố cục đường ray

Hiện tại tôi biết có một số ff. Phương pháp:

Render một chia sẻ một phần -> Không nơi để đặt các truy vấn

render :partial => "shared/sidebar" 

nội dung Đối với -> Chi tiết bổ sung trong các bình luận

<%= yield :sidebar %> 
<% content_for :sidebar do %> 
    <a href="http://www.netscape.com">Netscape</a><br> 
    <a href="http://www.lycos.com">Lycos</a><br> 
    <a href="http://www.walmart.com">Wal Mart</a><br> 
<% end %> 

3 là viết nó trực tiếp đến file layout .

Vì vậy, tôi nên thực hiện công việc này như thế nào?

+0

"Nội dung cho -> Vẫn trong chế độ xem" Tại sao? IMHO đây là cách bạn có thể làm điều này và vẫn có tất cả các truy vấn trong bộ điều khiển, tại sao bạn cần một truy vấn theo cách này? – jigfox

+0

Về cơ bản dựa trên sự hiểu biết của tôi. Nó chuyển sang chế độ xem của bộ điều khiển. Nhưng nếu nó giống như vậy tôi sẽ cần phải đặt mã truy vấn trong mỗi bộ điều khiển và đặt content_for ở mọi chế độ xem mà tôi muốn hiển thị thanh bên. – DucDigital

Trả lời

9

Nếu bạn muốn điều này trong mọi giao diện, bạn có thể đặt phương thức điền dữ liệu cần thiết vào application_controller và sử dụng before_filter để kích hoạt nó.

before_filter :load_sidebar 

def load_sidebar 
    @data = Thingy.find(:all) 
end 

Sau đó, một phần hoặc phần tử content_for của bạn kiểm tra @data và quy trình.

1

Nếu bạn muốn giảm số lượng mã trong số application_controller.rb, bạn có thể muốn xem xét sử dụng đá quý Cells.

Điều này sẽ cho phép bạn xác định 'truy vấn' của bạn trong bộ điều khiển ô riêng biệt và bạn sẽ hiển thị nội dung cho nó bằng cách sử dụng một cái gì đó như render_cell :sidebar, :myquery bên trong chế độ xem của bạn.

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