簡體   English   中英

Ruby on Rails呈現對實例變量的訪問

[英]Ruby on Rails rendering access to instance variables

當我渲染部分視圖或渲染未直接映射到控制器的視圖時,該其他視圖是否可以訪問控制器的實例變量?

實際上,您不會直接訪問控制器動作中存在的控制器實例變量,而發生的是Rails克隆它們並將它們傳遞給視圖。 然后,您可以通過這些克隆訪問它們的值。

在請求期間,您只能在控制器操作的對應視圖中訪問這些克隆的變量。 但是,您的應用程序為每個用戶都有一個會話 ,您可以在其中存儲少量數據,這些數據將在請求之間保留。

是的,Rails允許多個視圖共享控制器中定義的實例變量。 但是,您應該避免在多個視圖之間共享實例變量,這是因為實例變量可能會在視圖內部更改,並且不具有要在下一個視圖中顯示的原始值。

根據本文中的Ryan Bates,以下是使用渲染訪問實例變量的准則( Rails:局部對象是否應該知道實例變量? ):

  1. 切勿創建僅在部分之間共享實例變量的實例變量。 通常這意味着您將只共享控制器資源對象。

  2. 如果partial與資源名稱相同,則使用<%= render @item%>將其作為本地傳遞。

  3. 如果部分內容將在多個控制器之間共享,則僅使用本地。

暫無
暫無

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

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