web-dev-qa-db-ja.com

Rails 5のform_withのデフォルトとしてローカル:trueを設定します

フォームの送信にajax呼び出しを使用しないプロジェクトに取り組んでいるので、local: true Rails docs

:local - By default form submits are remote and unobstrusive XHRs. Disable remote submits with local: true.

ローカルオプションをデフォルトでtrueに設定する方法はありますか?

Rails 5 form_withこのようなヘルパー:

<%= 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 %>
18
Ramses

form_withメソッドのオーバーライドを検討してください:

# form_helper.rb
def form_with(options)
  options[:local] = true
  super options
end

それはあなたのアプリケーションのすべてのフォームでそれを解決するはずです。

8
ekampp

あなたが述べたように、それはlocal: trueでフォームごとに設定することができます。グローバルに設定するには、構成オプションform_with_generates_remote_formsを使用します

https://guides.rubyonrails.org/configuring.html -config.action_view.form_with_generates_remote_formsは、form_withがリモートフォームを生成するかどうかを決定します。デフォルトはtrueです。

イニシャライザに設定します。

# config/initializers/action_view.rb
Rails.application.config.action_view.form_with_generates_remote_forms = false
18
Guy C

Railsの設定はconfig/applicaiton.rb

module App
  class Application < Rails::Application
    # [...]

    config.action_view.form_with_generates_remote_forms = false
  end
end

ガイCの回答は適切ですが、個別のイニシャライザではなく、すべての構成をこのファイルに入れる方が慣用的です。これが、Rails devのほとんどがそれを期待する場所です。これを配置すると、これは惨事を引き起こすことに注意してくださいconfig/development.rbのみまたはその他の環境固有のファイル。

6
ecoologic