Je travaille sur un projet pour lequel nous n'utiliserons pas d'appels ajax pour soumettre les formulaires. Je dois donc mettre local: true
dans chaque formulaire du projet, comme indiqué dans les Rails docs :
:local - By default form submits are remote and unobstrusive XHRs. Disable remote submits with local: true.
Est-il possible de définir l'option locale sur true par défaut?
Nous utilisons Rails 5 form_with
helper comme ceci:
<%= form_with(model: @user, local: true) do |f| %>
<div>
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div>
<%= f.label :email %>
<%= f.email_field :email %>
</div>
<%= f.submit %>
<% end %>
Pensez à remplacer la méthode form_with
:
# form_helper.rb
def form_with(options)
options[:local] = true
super options
end
Cela devrait résoudre le problème pour chaque formulaire de votre application.
Comme vous l'avez dit, il peut être défini formulaire par formulaire avec local: true
. Pour le définir globalement, utilisez l'option de configuration form_with_generates_remote_forms
https://guides.rubyonrails.org/configuring.html - config.action_view.form_with_generates_remote_forms détermine si formulaire_with génère ou non des formulaires distants. Cette valeur par défaut est true.
Placez-le dans un initialiseur:
# config/initializers/action_view.rb
Rails.application.config.action_view.form_with_generates_remote_forms = false
Les configurations de rails peuvent être définies dans config/applicaiton.rb
module App
class Application < Rails::Application
# [...]
config.action_view.form_with_generates_remote_forms = false
end
end
La réponse de Guy C est bonne, mais il est plus idiomatique de mettre toute la configuration dans ce fichier plutôt qu’un initialiseur séparé; C’est là que la plupart des développeurs de Rails s’y attendaient. Notez que cela signifierait un désastre si vous ne le mettez que config/development.rb
ou d’autres fichiers spécifiques à env.