def shawshankRedemption = new Book(title: 'The Shawshank Redemption')
chain(action: "details", model: [book: shawshankRedemption])
chain
目的
使用 flash.html[flash] 儲存空間,在 HTTP 從一個動作重新導向到另一個動作後,隱式保留模型。
範例
說明
用法
chain(controller*, action, id*, model, params*)
引數
-
uri
- 要重新導向到的完整 uri(例如 /book/list、book/show/2) -
controller
(選用) - 要重新導向到的控制器;如果未指定,預設為目前的控制器 -
namespace
(選用) - 要鏈接到的控制器的命名空間 -
action
- 要重新導向到的動作,可以是字串名稱或目前控制器中動作的參考 -
id
(選用) - 重新導向中要使用的 id -
model
- 要鏈接到下一個動作的模型 -
params
(選用) - 要傳遞給鏈接到動作的參數。
chain 方法將傳遞的模型儲存在 flash 範圍中,然後執行 HTTP 重新導向。然後,模型會在下次要求時還原。最終傳遞給檢視的模型會從傳遞給 chain 方法的模型開始建立,然後將下一個動作傳回的模型中的所有資料都新增到該模型,這可能會取代原本傳遞給 chain 方法的模型中的一些資料。例如
def one() {
chain action: 'two', model: [name: 'Tony', town: 'Birmingham']
}
def two() {
[name: 'Anthony', country: 'England']
}
如果將要求傳送給 one
動作,該動作會鏈接到 two
動作,後者會傳回模型。傳遞給檢視的模型會包含 [name: 'Anthony', town: 'Birmingham', country: 'England']
鏈條方法需要一個 URI 來重新導向或一個控制器/動作/id 名稱組合