Tôi tin vào những gì bạn muốn có là có một cái nhìn sẽ chứa khối content_for
của bạn. Vì vậy, một ví dụ sẽ là nếu bạn có điều sau đây:
index.html.erb
<% content_for :head do %>
<%= stylesheet_link_tag 'users' %>
#Above this will load the users stylesheet
<% end %>
<h2>Example</h2>
<ul>
<% @users.each do |users| %>
<li><%= user.name %></li>
<% end %>
</ul>
Sau đó, để đầu ra những gì bên trong users
stylesheet chúng tôi có thể mang lại và vượt qua trong những biểu tượng của tên của content_for
.
Application.html.erb
<!-DOCTYPE html>
<html>
<head>
<%= yield :head%>
<title>This is my title</title
</head>
<body>
<p>This is a test</p>
<%= yield %>
</html>
Vì vậy, để xem xét whats xảy ra ở đây là rằng, trong ví dụ của tôi, tôi đang nói tôi có một stylesheet users
mà tôi muốn để nạp vào <head></head>
của ứng dụng của tôi .html.erb. Để làm điều này, tôi đặt số content_for
là trình trợ giúp của Rails và cung cấp cho nó mã định danh sysmbol là head
, sau đó được gọi trong số application.html.erb
nơi tôi làm yeild :head
. Vì vậy, những gì tôi nhận được ứng dụng của tôi để làm là khi index.html.erb
của tôi cho trang đó đang được hiển thị, application.html.erb
sẽ tải biểu định kiểu users
của tôi. Hy vọng điều này sẽ xóa mọi thứ cho bạn.
Cập nhật giải thích
Để thêm vào này một điều mục đích của sự kết hợp của việc sử dụng content_for
với yield
là để cho phép bạn đưa dữ liệu vào cách bố trí ứng dụng từ BẤT CỨ xem. Như một ví dụ khác. Bạn có thể có những điều sau đây:
<% content_for :title do %> My Title<% end %>
đây khi bộ điều khiển làm cho mẫu xem và kết hợp nó với cách bố trí ứng dụng, văn bản My title
sẽ được thay thế. yield(:head)
giúp bạn dễ dàng thêm các yếu tố khác vào trang cụ thể nếu cần. Hãy xem ví dụ sau:
app/views/layouts/application.html.ERB
<% if content_for?(:navbar) %>
<%= yield(:navbar) %>
<% else %>
<%# default navbar %>
<section class="navbar"></section>
<% end %>
app/views/blah/index.html.erb
<% content_for(:navbar) do %>
<section class="navbar"></section>
<% end %>
Và một lưu ý thêm không chắc chắn cách phát triển ứng dụng của bạn của bạn hoặc những gì khuôn khổ thiết kế của bạn sử dụng nhưng bạn cũng có thể hãy xem Rails-Bootstrap-Navbar. Cũng có thể là một thay thế.
Cảm ơn @hatStephensWork Tôi sẽ dùng thử. – akkdio
không phải lo lắng @akkdio, tôi cũng đã thực hiện yêu cầu kéo đến repo GitHub của bạn. Mọi câu hỏi chỉ hỏi. Tôi là một người mới, nhưng tôi nghĩ rằng tôi hiểu những gì đang xảy ra với cái này! – HatStephensWork