2011-08-24 42 views
6

Tôi đang tạo một ứng dụng có ruby ​​trên đường ray nơi tôi có một mục/_item.html.erb. Bên trong một phần là một tuyên bố lợi nhuận để tôi có thể thêm nội dung bổ sung khi cần thiết. Trong trường hợp này, tôi muốn thêm một nút cụ thể vào mục tùy thuộc vào chế độ xem một phần.Hiển thị nội dung bên trong một phần qua = yield

Đây là những gì tôi đã cố gắng và nó ám chỉ rằng một phần, nhưng nó không làm cho khối:

_item.html.erb

<%= yield if block_given? %> 
<div> 
    <%= item.name %> 
</div> 

someview.html.erb

... 

<% render(:partial => 'items/item', :collection => current_user.items do %> 
    <%= "HELLO" %>  
<% end %> 

... 

Tôi cũng đã thử sử dụng content_for và một số nội dung khác không thành công. Có cách nào để có thể hiển thị nội dung cụ thể bên trong một phần thông qua lợi nhuận không? Tôi hiện đang sử dụng Rails3

EDIT:

Tôi đã phát hiện ra rằng đó là: băm bộ sưu tập khiến nó không thể chèn khối.

Cả hai mảnh này công việc mã:

<%= render :layout => 'items/item' do %> 
     Hello world  
<% end %> 

<%= render :layout => 'items/item', :locals => {:item => current_user.items.first} do %> 
    Hello world  
<% end %> 

Điều này có nghĩa rằng nếu tôi làm một .each tôi có thể đạt được những gì tôi muốn, nhưng nó sẽ là mã xấu xí. Có ai biết cách này không?

Trả lời

4

content_for sẽ hoạt động tốt trong trường hợp này. Đây là mã tôi chỉ cần kiểm tra tại địa phương.

somewhere.html.erb

<% content_for :foobar do %> 
    fubar 
<% end %> 

_item.html.erb

<% if content_for? :foobar %> 
    <%= yield :foobar %> 
<% end %> 
+1

How are you làm việc này ra? Tôi đã thử thiết lập mã content_for bên trong ở trên, bên dưới và xung quanh kết xuất và tôi vẫn không thể thấy nội dung đang được hiển thị với một phần. Có phải vì tôi đang sử dụng bộ sưu tập không? – roloenusa

+0

Trong _item.html.erb, chúng ta có thể sử dụng content_for thay vì cho năng suất '<% ​​content_for: foobar if content_for? : foobar%> ' – rajkamal

+0

Có cơ hội nào bạn có thể đưa ra ví dụ nhanh về cách gọi kết xuất như thế nào? – roloenusa

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