2010-06-10 33 views
5

làm cách nào tôi có thể chuyển sang một hành động khác trong bộ điều khiển?Làm cách nào để chuyển trực tiếp đến nút gửi đến một hành động khác

Tôi có biểu mẫu và một số nút gửi. Mỗi nút submmit có tên.

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

Nó hoạt động nhưng không tốt. Tôi muốn di chuyển mã từ khối "thêm lời bình" vào hành động thêm lời mời:

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 
    } 

Hoặc nó tồn tại giải pháp tốt hơn? Nó sẽ được tốt đẹp:

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

Thanks a lot Tom

Trả lời

13

Sử dụng g:actionSubmit thẻ thay thế.

 <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

Cảm ơn, tôi ngu ngốc. –

+1

@tom LOL một người ngu ngốc may mắn (sau khi xem hồ sơ của bạn 8) –

0

Đối với những người đang sử dụng Twitter Bootstrap plugin (hoặc cần gì đó bên cạnh văn bản trong nút) và muốn thêm hình tượng vào nút, bạn sẽ cần phải sử dụng thẻ nút. Vì vậy, bạn cần phải làm điều gì đó như

ĐOẠN 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> 

nơi ở nút của bạn, bạn sẽ cần phải chỉ định tên của hành động của bạn với tiền tố

_action_ 

để có được một cái gì đó như thế này

name="_action_yourActionName" 

chỉ một lời nhắc nhở nhỏ, vì tôi đang sử dụng twitter Plugin Bottstrap 3.0 đây là làm thế nào bạn thêm một glyphicon

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

ĐOẠN 1. có hành vi tương tự như:

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

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

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

    </g:form> 

Cuối cùng ví dụ này giúp bạn có một hành vi tương tự như actionSubmit trong trường hợp bạn không muốn hoặc không thể sử dụng nó. Đây chỉ là một giải pháp thay thế và tốt hơn nên sử dụng actionSubmit bất cứ khi nào có thể.

Các vấn đề liên quan