我想根據實際模板定義content_for(:an__area)
在佈局級別做一個條件渲染,任何想法如何完成這個任務?Rails檢查是否yield:區域在content_for中定義
84
A
回答
193
@content_for_whatever
已被棄用。 使用content_for?
代替,就像這樣:
<% if content_for?(:whatever) %>
<div><%= yield(:whatever) %></div>
<% end %>
1
好吧我會無恥地做一個自我答覆,因爲沒有人回答,我已經找到答案:) 定義這是幫助方法在application_helper.rb或任何你發現方便。
def content_defined?(symbol)
content_var_name="@content_for_" +
if symbol.kind_of? Symbol
symbol.to_s
elsif symbol.kind_of? String
symbol
else
raise "Parameter symbol must be string or symbol"
end
!instance_variable_get(content_var_name).nil?
end
+0
呵呵,我喜歡你的自答回答,但是......小問題,`instance_variable_defined?(content_var_name)`有點整潔,而不是測試是否它是零。第二大點,content_for實例變量已棄用,因此您的解決方案不適用於未來驗證 – 2009-01-23 22:51:17
2
可以創建一個幫手:
def content_defined?(var)
content_var_name="@content_for_#{var}"
!instance_variable_get(content_var_name).nil?
end
並使用這個在您的佈局:
<% if content_defined?(:an__area) %>
<h1>An area is defined: <%= yield :an__area %></h1>
<% end %>
10
不是真的有必要創建一個輔助方法:
<% if @content_for_sidebar %>
<div id="sidebar">
<%= yield :sidebar %>
</div>
<% end %>
然後當然在你看來:
<% content_for :sidebar do %>
...
<% end %>
我用這一切的時候,以一列,兩列的佈局
1
我不知道的呼叫產量兩倍的性能影響之間有條件去,但是這會做,無論內部的實現產量(@content_for_xyz是不建議使用),沒有任何額外的代碼或輔助方法:
<% if yield :sidebar %>
<div id="sidebar">
<%= yield :sidebar %>
</div>
<% end %>
2
<%if content_for?(:content)%>
<%= yield(:content) %>
<%end%>
相關問題
- 1. 檢查座標是否在預定義的區域內
- 2. Rails 3:yield/content_for有一些默認值?
- 3. 檢查座標是否在區域內
- 4. 有沒有辦法在GRAILS中執行rails「yield/content_for」?
- 5. 檢查是否鼠標被點擊了在特定區域
- 6. 檢查是否在特定區域的按鈕
- 7. 檢查是否定義宏
- 8. Rails - 如何檢測content_for內容是否提供?
- 9. 檢查特定區域上是否有精靈 - AndEngine
- 10. Rails:使用「content_for」後佈局內相應的「yield」
- 11. content_for&yield沒有返回任何內容
- 12. 檢查標記是否在當前可見區域
- 13. 如何檢查UIImageView是否在UIScrollView的可見區域之外?
- 14. openstreetmap:檢查latlong是否在多邊形之外(區域)
- 15. android-如何檢查位置是否在特殊區域?
- 16. 如何檢查元素是否在溢出區域?
- 17. 確定CGPoint是否在圖像區域
- 18. Rails global content_for
- 19. Rails 3 content_for issues
- 20. rails content_for not shown
- 21. 如何檢查線或點是在區域內還是在區域外
- 22. JavaScript檢查屬性是否定義
- 23. C#檢查變量是否定義
- 24. Yii2檢查包是否被定義
- 25. C++檢查typedef是否已定義
- 26. 如何檢查課程是否定義?
- 27. 檢查是否複選框定義
- 28. 我無法檢查是否未定義
- 29. 如何檢查變量是否定義?
- 30. RequireJS - 檢查路徑是否定義
看到我的【答案】(http://stackoverflow.com/questions/3347322/yield-if-content-render-something-otherwise-rails-3/7409626#7409626)創建一個幫助器方法來將這種行爲封裝在Rails 3中。 – tristanm 2011-09-13 23:19:30