En mode simple_form, le bouton d'envoi est le suivant:
<%= f.button :submit, 'Save' %>
Nous essayons de passer un paramètre subaction
en cliquant sur le bouton Save
. Le params[:subaction]
devrait avoir la valeur "mise à jour" après avoir cliqué sur le bouton. Voici ce que nous avons essayé en vue mais cela n'a pas fonctionné:
<%= f.button :submit, 'Save', :subaction => 'update' %>
Existe-t-il un moyen de passer une valeur dans params[:subaction]
lorsque vous cliquez sur le bouton Save
?
Utilisez l'option nom et valeur.
<%= f.button :submit , name: "subaction",value: "update"%>
Dans votre contrôleur, vous obtiendrez des paramètres [: subaction] avec la valeur "update"
comme le fait remarquer dax,
<%= hidden_field_tag(:subaction, 'update') %>
<%= f.button :submit, 'Save' %>
Cela fournira la valeur de chaîne "mise à jour" à l'action du contrôleur routé via le champ caché. Il peut ensuite être récupéré par le contrôleur avec
params[:subaction]
En spécifiant f.button :button, type: 'submit'
, nous pouvons utiliser les attributs name
et value
comme suit pour soumettre en utilisant un seul paramètre. Notamment, la valeur soumise (par exemple, "gâteau") peut être différente du texte du bouton (par exemple, "Le meilleur gâteau").
_ form.html.erb
<%= f.button :button, 'The Best Cake', type: 'submit', name: 'dessert_choice', value: 'cake' %>
<%= f.button :button, 'The Best Pie', type: 'submit', name: 'dessert_choice', value: 'pie' %>
Contrôleur
def controller_action
dessert_choice = params[:dessert_choice] # 'cake' or 'pie'
end
Cette approche évite le besoin d'entrées cachées comme @dax mentionné dans le commentaire ci-dessus.
Testé sur Simple Form 3.3.1 avec Rails 4.2.