2011-01-31 18 views
1

目前在我的一個佈局視圖中有這樣的代碼。我可以從佈局文件重定向到控制器嗎?要麼?

<%- pending_items = items.pending.count 
if pending_reviews > 0 -%> 
    <div id="notice"> 
     <%= link_to("YOU HAVE #{pluralize(user_pending_items, 'PENDING ITEMS')}", user_item_path) %> 
    </div> 
<%- end -%> 

我需要擴展一些條件的代碼,然後如果滿足某些條件重定向到另一個動作。這裏有幾個問題:

  1. 如果有一定的條件滿足,我可以重定向回控制器從佈局文件?我還沒有找到任何有效的工具。
  2. 另外,在控制器中運行所有這些條件會更有意義嗎?我試着把它放在我的home_controller中,但佈局沒有提取值。

謝謝。

回答

1

看起來像應該移動到控制器的代碼。如果您爲每個頁面執行此操作,則可以將其移至應用程序控制器,然後放入之前的過濾器(about filters)。請記住,如果您希望在視圖中使用它們,則控制器應該設置實例變量(開頭爲@)。

+0

我將過濾器添加到我的application_controller。奇蹟般有效。謝謝。 – Jay 2011-02-01 21:20:39

1

我會建議將邏輯放置在您的控制器或模型中。你將不得不使用實例變量的值傳遞到您的佈局:

 
# in your controlller 
@pending_items = Item.pending.count 
if @pending_items > 0 
    ... 
    redirect_to ... 
else 
    ... 
    redirect_to ... 
end 

的@pending_items實例變量將在您的佈局進行訪問。

+0

這很有幫助。 – Jay 2011-02-01 21:22:08

相關問題