2012-07-24 64 views
0

我正在開發一個web應用程序,通過服務器提供。它的索引提供了一些商店交易,具有所有這些交易的身份。在.gsp,我有這樣的代碼:打開相同的網頁,但有另一個內容

<div id="content"> 
<g:each in='${promos}' var='promo'> 
<div id="up_box"></div> 
<div class="deal_container"> 
    <div class="images_container"><img src="${createLink(action:'showImage',controller:'image',id:promo.fotoPrincipal.id)}" width="120" height="105" /> 

    </div> 

    <g:link controller='promotion' action='openPromo' params="[promoid:promo.id]"> 

    <div class="oferta">${promo.name}</div> 
    </g:link> 
    <g:link controller='promotion' action='openPromo' params="[promoid:promo.id]"> 
    <div class="flecha"> 
    </div> 
    </g:link> 


</div> 

這意味着,當我點擊其中一個鏈接,它會打開一個URL是這樣的:

app/promotion/openPromo/3 

如果點擊了ID「3」的交易。我有一個「一般」交易細節頁面。我希望該頁面始終可以加載,並根據用戶點擊的交易來完成它的詳細信息。我怎樣才能做到這一點?

我不知道我的解釋是否清楚,如果我沒有請問。

謝謝!

回答

1

這兩個鏈接將由PromotionController中的openPromo動作處理,並將通過promoid的促銷id

然後,您可以加載相應的促銷以及您希望用戶看到的任何其他相關優惠,並將它們提供給視圖。例如:

class PromotionController { 

    def openPromo() { 
    Promo promo = Promo.get(params.promoid) 

    // Load any other relevant data or offers 

    render (view:'openPromo', model:[promo:promo, <any other model data here>] 
    } 
} 

然後,您可以在您的gsp中使用模型數據。

0

你可以做到這一點並補充說,以一個模板一般信息,然後從控制器使其像這樣

// render a template to the response for the specified model 
def theShining = new Book(title: 'The Shining', author: 'Stephen King') 
render(template: "book", model: [book: theShining]) 

......你有大約從Grails文檔此鏈接呈現更多的信息。

http://grails.org/doc/latest/ref/Controllers/render.html

你會很容易做到這一點,你可以添加一個建立連結,如第一批蒙山呼籲行動誰都會使該模板。

希望它有幫助;)和祝你好運!

0

我就是這麼做的,問我的同事後:

def openPromo() { 
    Promotion promo = Promotion.get(params.promoid) 
    [promo:promo] 
} 

幾乎你說的大衛,但沒有渲染,如果我的名字openPromo我的普惠制。

謝謝!

+0

太棒了!在'gsp'與控制器名稱相同的情況下,'[promo:promo]'是'render(view:'openPromo',model:[promo:promo])'的簡稱。 – 2012-07-24 10:49:14

相關問題