在一個最佳實踐的世界中,您何時讓視圖繼承控制器的實例變量,以及何時將它們明確地傳入到本地哈希中?關於視圖如何獲得變量
3
A
回答
5
你在你的控制器定義會自動傳播到視圖的任何實例變量,所以沒有必要明確地傳遞他們進來。這不僅適用於您的初始視圖,還適用於流程中呈現的任何部分。
當您調用相同的部分時,您需要發送:locals
變量,但需要它呈現不能通過:object
或:collection
不能容納的其他內容。
這裏是不恰當地使用實例變量的例子:
# Bad form
<%- @foo = 'example1' %>
<%= render(:partial => 'bar') %>
<%- @foo = 'example2' %>
<%= render(:partial => 'bar') %>
一個更好的辦法是這樣的:
<%= render(:partial => 'bar', :locals => { :foo => 'example1' }) %>
<%= render(:partial => 'bar', :locals => { :foo => 'example2' }) %>
不同的是,你會看到變量部分爲foo
,而不是@foo
。請記住,局部變量可能是未定義的,除非它們被傳入,否則可能會造成麻煩,因此請仔細測試。
0
好的做法是在控制器中設置變量。
你不應該從位指示傳給他們,因爲他們將是可見的自動
#your_controller
@name = "Pedro"
#your view
Hello, <%= @name %>!
相關問題
- 1. 如何獲得關於地圖位置變化的通知?
- 2. 如何獲得基於兩個變量的變量值
- 3. 如何獲得$ _REQUEST變量?
- 4. 如何獲得變量
- 5. 如何獲得視圖
- 6. 關於變量
- 7. 如何獲得基於定義的變量jQuery的相關ID的信息
- 8. 如何獲得相關伯努利變量
- 9. 如何獲得unix變量中關鍵字之間的文本
- 10. 如何獲得關聯到變量的首選項?
- 11. 如何獲得兩個滯後變量之間的相關性
- 12. 如何獲得與NET-SNMP註冊回調關聯的變量
- 13. 如何獲得關於這個問題的評論的數量
- 14. 獲得關於媒體查詢的清晰視圖
- 15. 如何在Eclipse中獲得CCRC的「複製視圖區域」作爲變量?
- 16. 我如何獲得表變量的rowcount?
- 17. 如何獲得C++變量聲明
- 18. 如何獲得POST變量的jQuery
- 19. 如何獲得帶有變量的NSString?
- 20. ExtJS的:如何獲得Session變量
- 21. 如何獲得一個變量的xml
- 22. equationsToMatrix:我如何獲得變量的值?
- 23. 如何獲得所有全局變量
- 24. 如何在PHP中獲得$ _GET變量
- 25. 如何獲得更多的變量值?
- 26. 如何獲得JSON字符串變量
- 27. 如何獲得%vsspv_visualstudio_dir%變量的值?
- 28. 道場:如何獲得變量
- 29. Apache - 如何獲得REMOTE_USER變量
- 30. 如何獲得塊內變量的值
即使視圖和從該視圖調用的部分將有權訪問控制器中設置的實例變量,我將局部變量傳遞給局部變量,以使局部變量「像一個帶有參數的自包含方法」。當我需要從一個完全不同的控制器渲染該部分時,我知道該部分不依賴於任何其他變量,而不是以本地方式傳遞給它的其他變量。 – Zabba 2011-05-06 15:59:27