假設我有一個名爲「Statistics」或「Friends」的300X300px的塊,此塊需要傳統上應放置在控制器內的一些數據庫對象和邏輯操作,一些實例變量將很好地顯示在視圖/部分中。我想在Rails中渲染控制器/動作
這個區塊可以從我網站上的很多頁面調用,穿過各種控制器和操作。
我該如何解決這個問題,而無需在控制器中重複代碼,也不需要在視圖內放置邏輯。
一個不好的解決方案是將SQL查詢放入視圖中,或者使用iframe來控制單個控制器/操作生成期望的HTML。
任何想法將不勝感激。
假設我有一個名爲「Statistics」或「Friends」的300X300px的塊,此塊需要傳統上應放置在控制器內的一些數據庫對象和邏輯操作,一些實例變量將很好地顯示在視圖/部分中。我想在Rails中渲染控制器/動作
這個區塊可以從我網站上的很多頁面調用,穿過各種控制器和操作。
我該如何解決這個問題,而無需在控制器中重複代碼,也不需要在視圖內放置邏輯。
一個不好的解決方案是將SQL查詢放入視圖中,或者使用iframe來控制單個控制器/操作生成期望的HTML。
任何想法將不勝感激。
我想,這是什麼樣的事情,你應該在一個輔助方法做。這可能是一個好主意,用locals
爲你局部的,而不是實例變量,以免污染你的看法命名空間:
module ApplicatonHelper
def friends_block
friends = Friend.where(...)
# Assuming the 'friends_block' partial is in a directory 'app/views/shared'
render :partial => "shared/friends_block", :locals => {:friends => friends}
end
end
的friends_block
部分將使用本地變量:
<div id="friends_block">
<% friends.each do |s| %>
...
<% end %>
</div>
而其他意見將只使用幫手方法,而不必擔心別的:
<%= friends_block %>
我會將塊放入一個局部區域,並確保該塊所需的實例變量加載到相關控制器和操作的before_filter
中。
看一看單元格的寶石: https://github.com/apotonick/cells
這真的很有趣,謝謝 – wael34218 2012-04-20 11:59:36