I'm working on a project where we won't be using ajax calls for submitting the forms, so I need to put local: true
in every form in the project, as indicated in the rails docs:
:local - By default form submits are remote and unobstrusive XHRs. Disable remote submits with local: true.
Is there any way to set the local option as true by default?
We're using Rails 5 form_with
helper like this:
<%= 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 %>
As you've stated it can be set on a per form basis with local: true
. However it can be set it globally use the configuration option [form_with_generates_remote_forms][1]
. This setting determines whether form_with generates remote forms or not. It defaults to true.
Where to put this configuration? Rails offers four standard spots to place configurations like this. But you probably want this configuration in all enviroments (i.e. development, production, ...). So either set it in an initializer:
# config/initializers/action_view.rb
Rails.application.config.action_view.form_with_generates_remote_forms = false
Or maybe more commonly set in config/application.rb.
# config/application.rb
module App
class Application < Rails::Application
# [...]
config.action_view.form_with_generates_remote_forms = false
end
end