2011-07-22 12 views

答えて

8

<g:actionSubmit>tagでは、複数の送信ボタンを1つのフォームにまとめることができます。

<g:form controller="test"> 
    <g:actionSubmit value="Submit to success" action="success"/> 
    <g:actionSubmit value="Submit to delete" action="delete"/> 
</g:form> 
1

単一のフォームは1つのアクションしか持つことができません。

JavaScriptを使用して動的にアクションを変更できますが、JSに依存性が追加されます。

より良いフォームは、単一のURLに提出してから(擬似コード)の線に沿って何かを持っていることです。

if (submit is foo) { 
    process_form_with_foo_class() 
} elseif (submit is bar) { 
    process_form_with_bar_class() 
} else { 
    // Form was submitted without using a submit button 
    // e.g. with enter, or JS. 
    process_form_with_foo_class() // Let's use foo as the default 
} 
+0

yup! thanks Quentin – maaz

+0

正規のHTMLフォームには当てはまりますが、Grailsは ''でこれを行うことができます。それは、正しいアクションにルーティングされる原因となるパラメータを要求に入れます。 –

+0

@Rob - err ... Grailsには、今説明したばかりの機能が組み込まれていますか? – Quentin

2

あなたは、単一のGrailsを持っている<g:actionSubmit/>ボタンを使用することができますさまざまなアクションに行く形成。

<g:form method="post"> 
    ... 
    <g:actionSubmit action="oneAction" value="One Action"/> 
    <g:actionSubmit action="anotherAction" value="Another Action"/> 
</g:form> 

クリック「ワンアクション」電流コントローラのoneAction作用によって処理されます。 「別のアクション」をクリックすると、現在のコントローラのアクションであるanotherActionが処理されます。

+0

2番目のアクションを別のコントローラで制御することは可能でしょうか?もしそうなら。 – Nathan

+1

私はそれを見つけることができません。私は、 '

'が要求がどこに行くのかを制限しようとすると厳しいと思います。あなたはそれのためにいくつかの形式をしなければならなくなるかもしれません。 URLマッピングを使用して、それぞれのコントローラ/アクションを別のコントローラに再マップすることもできますが、それは私にとってはちょっとハッキリです。 –

+0

それは私が避けようとしていることです。私は清潔でメンテナンスしたいと思いますが、ユーザーにワンピースを提出させ、プロセスを終了するために別のコントローラーに誘導するようにしています。おそらく、ボタンに「作成」コマンドを送信してユーザーを次のフォームにリダイレクトする方法がありますか? – Nathan