6

私の場合、新規とプレビューの場合、作成と編集の両方で同じフォーム部分を使用します。部分的にはこのように見えます(私はHAMLを使用しています)

=form_tag ({:action => params[:action]},  :multipart => true)
  =text_field :newsletter, :title
  =text_area :newsletter, :body
  =file_field :newsletter,:attachment
  -if params[:action] == "preview"
     =button_to "select contacts and send", :action => "contacts"
  =submit_tag "save and preview"

しかし、html出力では

...
<input type="submit" value="select contacts and send"/>
<input type="hidden" value="rwYnZlEpWV4dR89zjgprEALBYmP0xqM3lnKt9JDLyak=" name="authenticity_token"/>
<input type="submit" value="save and preview" name="commit"/>
...

button_to が button-to フォームを生成しないのはなぜですか?

解決策は、ボタンを部分の外側に保持し、フォームごとに 1 つだけにすることですが、同じフォームに 2 つのボタンを配置するにはどうすればよいですか?

編集: 別の回避策は、button_to が押されてフォームを送信し、コントローラーでそれらを分離する場合に、javascript によって設定される非表示のチェックボックスです。

4

3 に答える 3

14

HTMLでは、実際にはフォームをネストすることはできません。一部のブラウザはそうしますが、他のブラウザではおかしな動作が見られます。表示しているHTMLは、firebugからの生の出力または計算されたDOMですか?

このケースを処理するための好ましい方法はbutton_to、他のフォームの外側に移動することです。JSのみのオプションがお好きな場合link_to :method => :postは、リンクを使用してボタンのようにスタイルを設定できます。

于 2009-09-19T18:14:38.620 に答える
1

という宝石を作りbutton_link_toます。

button_link_to メソッドを使用すると、ボタン タグが生成されますが、フォーム タグによってネストされません。

link_to のように使用するだけです。

ここから詳細情報を取得できます: https://github.com/tonilin/button_link_to

デモを見たい場合: http://button-link-to.herokuapp.com/

于 2013-10-17T15:02:14.967 に答える
1

最終的に使用したのは、

:name => 'otheraction'

コントローラーで、次のいずれかかどうかを確認します

params[:commit] or params[:otheraction]

params ハッシュにあった

于 2009-09-22T09:10:10.173 に答える