我需要在BOOL SetWindowDisplayAffinity(HWND hWnd,DWORD dwAffinity);
中使用yield
/ content_for
,但要在<head>
中分配值。我发现,当从正在<body>
的模板中分配值,而不是从yield
的模板中分配值时,这很好用。 render
之后正在编译的模板在render
>之后进行编译,因此我的价值已经确定了。有什么方法可以实现我的目标?
我试图使application.html.erb看起来像这样:
<head
和<%= render layout: 'application_template' do %>
<!-- <body> content here -->
<% end %>
如下:
_application_template.html.erb
但是发生相同的问题,渲染<!doctype>
<html>
<head>
<%= content_for :my_value %>
</head>
<body>
<%= yield %>
</body
</html>
时该值为nil。
答案 0 :(得分:0)
您应该能够执行以下操作。 在脑海中检查是否有任何要屈服的内容,如果有则屈服。
<% if content_for?(:my_value) %>
<%= yield :my_value %>
<% else %>
然后在体内的某个位置定义内容。
<% content_for :my_value do %>
# your contents
<% end %>
答案 1 :(得分:0)
我想出了一个解决办法。
# layouts/application.html.erb
<% content_for(:body_content) { render partial: 'layouts/body_content' } %>
<!doctype html>
<html>
<head>
<%= yield :my_value if content_for?(:my_value) %>
</head>
<body>
<%= yield :body_content %>
</body>
</html>
和
# layouts/_body_content.html.erb
# everything that used to be in <body></body> goes here and is maintained here.
这可确保我需要进行的所有#content_for
调用都将在<head>
被编译到布局中之前发生。相比我想尝试的其他一些技巧,维护起来也更容易。