2010-06-10 28 views
5

¿cómo puedo saltar a otra acción en el controlador?Cómo dirigir para enviar el botón a otra acción

Tengo formulario y varios botones de envío. Cada botón de submmit tiene nombre.

<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 = { 
     ... 
    } 

Funciona, pero no es bueno. Quiero mover el código del bloque "addComment" a la acción 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 
    } 

¿O existe una mejor solución? Sería bueno:

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

Muchas gracias Tom

Respuesta

13

utilizar la etiqueta g:actionSubmit lugar.

 <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

Gracias, soy estúpido. –

+1

@tom LOL un afortunado estúpido (después de ver tu perfil 8) –

0

Para aquellos que están usando Twitter Bootstrap plug-in (o necesitan algo más que texto en el botón) y quiere añadir un glyphicon al botón, usted tendrá que utilizar la etiqueta de botón. Así que hay que hacer algo como

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> 

donde en el botón tendrá que especificar el nombre de su acción con el prefijo

_action_ 

para conseguir algo como esto

name="_action_yourActionName" 

solo un pequeño recordatorio, ya que estoy usando twitter Bottstrap plugin 3.0 esto es La forma de agregar un glyphicon

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

SNIPPET 1. tiene un comportamiento similar a:

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

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

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

    </g:form> 

Al final este ejemplo ayudará a tener un comportamiento similar al actionSubmit en los casos en que no quiere o no puedo usarlo Esta es solo una alternativa y sería mejor usar actionSubmit siempre que sea posible.

Cuestiones relacionadas