幫我理解這一點;我正在學習Sinatra(和Rails,呃,Ruby)。幫我理解Sinatra的動態佈局
說我正在做一個搜索應用程序。搜索表格分爲一格,結果將在另一格中列出。搜索表單通過前一個視圖呈現爲div(可能來自登錄表單)。
我想處理表單參數,執行搜索,並將結果呈現到結果div中。
如果我在佈局中有一個「yield」並從不同的視圖渲染div,則結果div將在呈現時擦除搜索div。
如果我在默認佈局中定義div,那麼只需渲染內容,顯然佈局會搞亂:必須有兩個「yield」,我不認爲Sinatra支持將塊傳遞給yield 。
我試過foca的sinatra-content-for plugin,這看起來更接近我所需要的。但我無法弄清楚放置「yield_content」語句的位置。
如果我有這樣的HAML在我的佈局:
#search
-# search form
= yield_content :search
#results
-# search results
= yield_content :results
...這在我的搜索視圖:
- content_for :search do
%form{:method => "post"... etc.
...這在結果視圖:
- content_for :results do
%table{:class => 'results'... etc.
這類作品,但是當我渲染結果視圖時,搜索div被清空。我想保留它。難道我做錯了什麼?我應該如何設置?
如何你是否呈現結果視圖? Ajax,刷新頁面? – Beffa 2010-03-18 12:58:55