= Button_to ne génère pas la forme si elle est déjà dans une autre forme
-
11-09-2019 - |
Question
En utilisant la même forme partielle dans les deux créer et modifier dans mon cas nouveau et aperçu. regards partiels un peu comme celui-ci (j'utilise 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"
mais au-sortie html est
...
<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"/>
...
pourquoi le button_to ne génère pas le bouton pour former?
une solution consiste à maintenir le bouton en dehors de la partie, et seulement 1 par la forme, mais comment puis-je avoir 2 boutons dans la même forme?
modifier: Une autre solution serait une case à cocher caché qui est définie par javascript si le button_to est pressé et soumet le formulaire, en les séparant dans le contrôleur
La solution
HTML ne permet pas en fait des formes à être imbriquées. Certains navigateurs font, mais vous verrez un comportement fou dans d'autres. Le HTML vous montrant la sortie brute ou le DOM calculée à partir Firebug?
La meilleure façon de traiter ce cas est de déplacer votre button_to
en dehors de l'autre forme. Si vous êtes cool avec JS uniquement les options, vous pouvez utiliser link_to :method => :post
et le style le lien pour ressembler à un bouton.
Autres conseils
En fin de compte utilisé le
:name => 'otheraction'
dans le contrôleur vérifie alors si l'un
params[:commit] or params[:otheraction]
était dans le hachage params
Je construis un petit bijou appelé button_link_to
.
En utilisant la méthode de button_link_to génère balise button mais sans nichait balise form.
Il suffit de l'utiliser comme link_to.
Vous pouvez obtenir plus d'informations ici: https://github.com/tonilin/button_link_to
Si vous voulez voir une démo: http://button-link-to.herokuapp.com/