J'ai un formulaire qui contient des champs text_fields. L'un d'eux est le champ du code postal. Il dispose d'un bouton "Rechercher" qui appelle une action spécifique "search_zip_code" qui renvoie les valeurs d'adresses associées à ce champ. Comment puis-je appeler cette action dans un tag form_for? J'ai déjà essayé un form_tag imbriqué, mais l'action submit appelle la méthode: create. Si j'utilise un "link_to", je ne peux pas passer le code postal entré par l'utilisateur. Quelle est la meilleure approche pour cela?Comment appeler une action spécifique à l'intérieur d'un formulaire_for
<%= form_for(@model) do |m|%>
<%= m.label :field_1 %>
<%= m.text_field :field_1 %>
<%= m.label :field_2 %>
<%= m.text_field :field_2 %>
<div class="field">
<%= form_tag("/search_zip_code", method: "get") do %>
<%= label_tag(:zip, "ZIP Code:") %>
<%= text_field_tag(:zip) %>
<%= submit_tag("Search") %>
<% end %>
</div>
<%= m.submit %>
<% end %>
Pourquoi l'action "/ search_zip_code" n'est pas atteint par le bouton submit_tag? Même si je change cette route en méthode: post, cela ne fonctionne pas.
Merci,
Guilherme
Déplacer la balise de forme en dehors de la form_for et ajouter une télécommande: true à votre form_tag afin qu'il fait un ajax appelez votre contrôleur. Dans votre contrôleur, renvoyez javascript ou json et créez un fichier javascript avec les informations que vous souhaitez insérer dans votre formulaire_for. –
La spécification HTML n'autorise pas les formes imbriquées. En utilisant des formulaires imbriqués, vous comptez sur l'analyse de slops et les résultats peuvent être incohérents. https://www.w3.org/TR/html5/forms.html#the-form-element – max
Utilisez javascript à la place pour lier un gestionnaire d'événements à l'entrée. – max