簡體   English   中英

Rails產生和content_for部分

[英]Rails yield and content_for in partial

我已經習慣使用content_foryield來獲取我的視圖,以便設置與視圖渲染相關的頁面標題和其他整潔的東西。

現在我陷入了下一個方案:LAYOUT - > VIEW(edit.html.erb) - > PARTIAL(_main.html)。 那是 - 視圖包含部分。

如果我定義content_for :view_content_title, "Hello World"的部分,它是在布局訪問,但它不會在視圖- content_for?(:view_content_title)

為什么? 我該怎么辦呢?

我想我發現了原因。 Rails以線性方式呈現視圖。 它在部分之前呈現視圖,然后是部分視圖,然后是視圖的其余部分。 如果你打電話給content_for?我測試了content_for? 或渲染部分后在視圖中渲染內容 - 如果之前 - 內容不存在則可以。

並且在視圖之后呈現布局,這就是為什么在那時內容已經可用,因為視圖和部分已經被渲染,例如執行指令。

一種可能的解決方法是布局可以訪問:locals ,因此您可以執行以下操作:

view_file.html.erb

<%= render partial: "my_partial", layout:"my_layout", locals:{:title=>"Best Answer Ever"} %>

_my_layout.html.erb

<H1> <%= title %> </H1>
<%= yield %>

_my_partial.html.erb

All your content goes here, and this partial also has access to locals if you want to use them.

這將產生:

<H1>Best Answer Ever</H1>
All your content goes here, and this partial also has access to locals if you want to use them.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM