2010-06-10 19 views
5

Jak przejść do innej akcji w kontrolerze?Jak przekierować przycisk do innej akcji

Mam formularz i kilka przycisków przesyłania. Każdy przycisk submmit ma nazwę.

<g:form action="save" method="post"> 
    <g:input name="title" value="${letter.title}" /> 
    <g:input name="comments[0].text" value="${letter.comments[0].text}" /> 
    <g:submitButton name="save" value="save" /> 
    <g:submitButton name="addComment" value="add" /> 
</g:form> 

def save = { 

    if (params.addComment){ 
     letter.addToComents( new Comment()) 
     render(view:'form', model:["letter": letter]) 
     return 
    } 

    ... 
    if (letter.save()) 
    ... 
} 

def addComment = { 
     ... 
    } 

Działa, ale nie jest dobra. Chcę przenieść kod z bloku "addComment" do działania addComment:

def save = { 

    if (params.addComment){ 
     // it don´t work 
     redirect (action:"addComment") 
    } 

    ... 
    if (letter.save()) 
    ... 
} 

def addComment = { 
     letter.addToComents( new Comment()) 
     render(view:'form', model:["letter": letter]) 
     return 
    } 

Czy istnieje lepsze rozwiązanie? Byłoby miło:

<g:submitButton name="save" value="save" action="save" /> 
<g:submitButton name="addComment" value="add" action="addComment" /> 

Thanks a lot Tom

Odpowiedz

13

Użyj g:actionSubmit tag zamiast.

 <g:form method="post"> 
      <g:input name="title" value="${letter.title}" /> 
      <g:input name="comments[0].text" value="${letter.comments[0].text}" /> 
      <g:actionSubmit action="save" value="Save" /> 
      <g:actionSubmit action="addComment" value="Add Comment" /> 
     </g:form> 
+4

Dzięki, jestem głupi. –

+1

@tom LOL - głupi głupiec (po zobaczeniu twojego profilu 8) –

0

Dla tych, którzy są za pomocą wtyczki Twitter Bootstrap (czy trzeba coś oprócz tekstu w przycisku) i chcesz dodać glyphicon przycisku, trzeba będzie użyć tagu przycisk. Więc trzeba coś zrobić jak

SNIPPET 1.

<g:form role="form" method="post"> 
     ...your inputs 

    <button type="submit" name="_action_save"> 
    <span class="glyphicon glyphicon-ok"></span> 
    Save 
    </button> 

    <button type="submit" name="_action_saveAndNew"> 
     <span class="glyphicon glyphicon-ok"></span> 
     Save and New 
    </button> 
    </g:form> 

gdzie w przycisk trzeba będzie podać nazwę swojego działania z prefiksem

_action_ 

dostać coś takiego

name="_action_yourActionName" 

Po prostu małe przypomnienie, ponieważ używam wtyczki plugin Bottstrap 3.0 to jest jak dodać glyphicon

<span class="glyphicon glyphicon-ok"></span> 

SNIPPET 1. ma podobne zachowanie do:

<g:form role="form" method="post"> 
     ...your inputs   

    <g:actionSubmit action="save" value="Save" /> 

    <g:actionSubmit action="saveAndNew" value="Save and New" /> 

    </g:form> 

w końcu ten przykład pomóc mają podobne zachowanie do actionSubmit w przypadkach, gdy nie chcesz lub nie można z niego korzystać. To jest tylko alternatywa i lepiej, jeśli to możliwe, użyć actionSubmit.

Powiązane problemy